用捆绑传递arraylist

时间:2014-08-10 17:17:41

标签: java android

我有一个这样的课程

class Message implements Serializable
{
    public String message, sender;
    public Message (String msg, String from)
    {
        // check here that msg and from are not null. If so, use a default value or throw an NullPointerException
        message = msg;
        sender = from;
    }
    // Just a utility method for printing out the Message to System.out
    public String toString () { return sender+":"+message; }
}

我在主要活动中定义了这个变量

Hashtable<String, ArrayList<Message>> table = new Hashtable<String, ArrayList<Message>>();
table.get(room_name).add(new Message("Hi", "Sender"));
Bundle bundle = new Bundle();
bundle.putSerializable("messages", table.get(sendTo));

在片段中,我使用此代码获取此数据

ArrayList<Message> extractedMessages = (ArrayList<Message>)getArguments().getSerializable("messages");
System.out.println(extractedMessages.size());

但是我的应用程序崩溃了,我得到了extractedMessages.size()

的java nullpointer异常

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

解决方案 ::

Bundle.putParcelable/Bundle.getParcelable

看看这个answer

  • 使用这些方法,putParcelablegetParcelable

您也可以 ::

Intent intent = new Intent(context, SecondActity.class);
intent.putIntegerArrayListExtra("arraylist",myArrayList);  //myArrayList is ArrayList<Integer>
startActivity(intent);

在第二个Activity中获取arrayList。

ArrayList arrayList<Integer> = getIntent().getIntegerArrayListExtra("myArrayList")

{Edit} ----您可以使用newInstance将数据从片段传递到片段

这是实现它的方法之一,我使用构造函数来传递数据

<强> FragmentOne.java

int myData=12;
FragmentManager manager = getActivity().getSupportFragmentManager();
Fragment frgObj=FragmentTwo.newInstance(myData);
FragmentTransaction ft = manager.beginTransaction();
ft.replace(R.id.container, frgObj,"FragmentTwo");
ft.addToBackStack(null);
ft.commit();

<强> FragmentTwo.java

int myData;
public static FragmentTwo newInstance(int _myData){
FragmentTwo fragment = new FragmentTwo();
myData=_myData
return  fragment;
}

{EDIT-3}

我为你做了一个项目download it from Here

  • 在你的编辑器中安装并运行它....它有很多其他的东西 ....不要为此烦恼
  • 查看我的starting a fragment from activity ----&gt;然后 onClick按钮的starting a fragment我是edit2 ---&gt;通过 我在{{1}}
  • 中显示的构造函数的数据

ALSO REFER -- this -- StackOVERFLOW POST