Android的传球对象片段 [英] Android passing object to fragment

查看:161
本文介绍了Android的传球对象片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个消息类

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆