Java 带束传递arraylist
我有一节这样的课Java 带束传递arraylist,java,android,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
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));
Hashtable=newhashtable();
表.get(房间名称).添加(新邮件(“嗨”,“发件人”));
Bundle=新Bundle();
bundle.putSerializable(“messages”,table.get(sendTo));
在片段中,我用这个代码得到了这些数据
ArrayList<Message> extractedMessages = (ArrayList<Message>)getArguments().getSerializable("messages");
System.out.println(extractedMessages.size());
ArrayList extractedMessages=(ArrayList)getArguments().getSerializable(“消息”);
System.out.println(extractedMessages.size());
但是我的应用程序正在崩溃,我得到了extractedMessages.size()的java空指针异常
如何解决此问题?解决方案是:
Bundle.putParcelable/Bundle.getParcelable
Intent intent = new Intent(context, SecondActity.class);
intent.putIntegerArrayListExtra("arraylist",myArrayList); //myArrayList is ArrayList<Integer>
startActivity(intent);
看看这个
- 使用这些方法,
putParcelable
和getParcelable
您还可以::
Bundle.putParcelable/Bundle.getParcelable
Intent intent = new Intent(context, SecondActity.class);
intent.putIntegerArrayListExtra("arraylist",myArrayList); //myArrayList is ArrayList<Integer>
startActivity(intent);
FragmentTwo.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();
int myData;
public static FragmentTwo newInstance(int _myData){
FragmentTwo fragment = new FragmentTwo();
myData=_myData
return fragment;
}
{EDIT-3}
我为你做了一个项目
- 在编辑器中装入并运行它。。。。它还有很多其他的东西
.... 别为这事操心
- 检查我是如何从活动中启动片段的
onClick
我是如何开始一个片段的按钮
如我在edit2
你能举个例子吗?但这不是我使用片段的活动。你在使用片段。。。。好啊检查我的编辑。。。。我已经传递了整数,同样你也可以传递arraylist。。。简单@托尔盖·托克拉尔。。。。从我的edit3
下载该项目,并学习如何使用newInstance
。。。。让我知道你是否能够解决它!我想我做不到。有没有其他方法通过自定义arraylist?