我有一个这样的课程
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()
我该如何解决这个问题?
答案 0 :(得分:1)
解决方案 ::
Bundle.putParcelable/Bundle.getParcelable
看看这个answer。
putParcelable
和getParcelable
。您也可以 ::
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")
这是实现它的方法之一,我使用构造函数来传递数据
<强> 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;
}
我为你做了一个项目download it from Here
starting a fragment from activity
----&gt;然后
onClick
按钮的starting a fragment
我是edit2
---&gt;通过
我在{{1}}