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?