2016-04-03 62 views
1

我想动态地创建片段。所以当点击导航片段项时,会触发活动中的回调函数与详细片段进行通信。以下是活动回调派:调用片段方法但片段没有准备好

public void getChatRoomId(long chatroom_id) { 
    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 
    MsgChatRoom msgChatRoom = new MsgChatRoom(); 

    ft.replace(R.id.activity_chat_MsgChatroom_container, msgChatRoom, "messages"); 
    ft.addToBackStack(null); 
    ft.commit(); 

    msgChatRoom.startQuery(chatroom_id); 
} 

我可以调用startQuery方法,但这种方法我需要一些参数应该在onCreateActivity()被初始化。但是,当我打电话给startQuery时,片段不叫OncreateActivity。所以会出现错误:

.... on a null object reference

如何解决这个问题。提前致谢。

+1

有关使用setArguments如何的例子吗? – Pooya

+0

@Pooya谢谢。 setArguments使其起作用 – sydridgm

+0

太棒了!只是添加了澄清的答案 – Pooya

回答

1

您可以使用Fragment的setArguments(Bundle)函数将参数传递给片段。

当您创建片段时,通过setArguments()传递参数,然后在您的片段中通过以这种方式调用来检索它们,您不会等待特定片段的生命周期能够使用您的数据。

欲了解更多信息,您可以访问http://developer.android.com/reference/android/app/Fragment.html其中还包含几个使用这些功能

相关问题