Kev*_*lia 13 java android arraylist android-intent long-integer
我正在编写一个应用程序,通过json从服务器中提取多个long,然后将该列表从一个活动传递到另一个活动.基本骨架如下所示:
public void onResponse(Map result)
{
ArrayList handles= (ArrayList)result.get("fileHandles");
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("handles", handles);
}
Run Code Online (Sandbox Code Playgroud)
所以,第一个问题变得很明显,对于putExtra的唯一方法是putIntegerArrayListExtra,putStringArrayListExtra,putCharSequenceArrayListExtra,和putParcelableArrayListExtra.Thinking Long可能是可以分配的,我错了它不起作用(即使我使用ArrayList<Long>).接下来我以为我只是通过了一个很长的[],但是我认为没有直接的转换可以接受ArrayList<Long>long [] intent.putExtra.这是我最终得到的解决方案:
ArrayList handles= (ArrayList)result.get("fileHandles");
long [] handleArray = new long[handles.size()];
for (int i = 0; i < handles.size(); i++)
{
handleArray[i] = Long.parseLong(handles.get(i).toString());
}
Run Code Online (Sandbox Code Playgroud)
显然这对我来说似乎有点荒谬,但我尝试的其他所有转换似乎都因某种原因而抱怨.在考虑到这一点之前,我已经考虑重新思考我的序列化以解决问题,但我发现ArrayList<Long>从活动到活动的过程可能非常困难.有没有更明显的解决方案我错过了?
kco*_*ock 16
您可以将其用作Serializable额外的.ArrayList是Serializable和Long扩展Number,它也实现Serializable:
// Put as Serializable
i.putExtra("handles", handles);
// Unfortunately you'll get an unsafe cast warning here, but it's safe to use
ArrayList<Long> handles = (ArrayList<Long>) i.getSerializableExtra("handles");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3305 次 |
| 最近记录: |