Android的传球对象片段 [英] Android passing object to fragment
问题描述
我有一个消息类
class Message
{
public String message, sender;
public Message (String msg, String from)
{
message = msg;
sender = from;
}
public String toString () { return sender+":"+message; }
}
我定义中使用的表变量这个类主要活动:
I defined a table variable for use this class in main activity:
Hashtable<String, ArrayList<Message>> table = new Hashtable<String, ArrayList<Message>>();
我在主要活动中,以消息类此code添加数据:
I am adding data in main activity to message class with this code:
table.put("user01", new ArrayList<Message>());
table.get("user01").add(new Message("message","sender"));
和我想用在其他fragment.I这个表变量想过去这个code至片段。
And I want to use this table variable in another fragment.I am passing with this code to fragment.
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ConversationFragment conv = new ConversationFragment();
fragmentTransaction.add(R.id.container, conv);
ConversationFragment frgObj=ConversationFragment.newInstance(table.get("user01"));
fragmentTransaction.replace(R.id.container, frgObj,"ConversationFragment");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
这是函数的newInstance会话中的片段
And this is newInstance function in Conversation fragment
static int myData;
public static ConversationFragment newInstance(ArrayList<Message> _extractedMessages){
ConversationFragment fragment = new ConversationFragment();
myData=_extractedMessages.size();
return fragment;
}
但是我得到空指针异常,为_extractedMessages.size()。
But I am getting nullpointer exception,for _extractedMessages.size().
这code正在
System.out.println(_extractedMessages);
但是,这是行不通的。
But this is not working
System.out.println(_extractedMessages.size());
PS:我可以在主要活动中使用的大小的功能,我不仅可以在谈话片段用
Ps:I can use size function in main activity,I can't use only in conversation fragment.
我怎样才能解决这个问题?
How can I fix it ?
推荐答案
通常,您将参数传递给在Bundle的的片段(并确保消息类实现Parcelable)的:
Typically you pass parameters to the fragment in the Bundle (and make sure the Message class implements Parcelable):
public static ConversationFragment newInstance(ArrayList<Message> _extractedMessages){
ConversationFragment fragment = new ConversationFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(KEY_MESSAGES, _extractedMessages);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myData = getArguments().getParcelable(KEY_MESSAGES);
}
这篇关于Android的传球对象片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!