2016-04-03 34 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其中還包含幾個使用這些功能