2017-01-22 54 views
1

我有一個文件fragment_item_attachment.xml,它有一個<RelativeLayout>和相應的ItemAttachmentFragment.java,但我該如何計算出相應的活動是什麼?這些活動似乎都被命名不同。如何確定哪些活動負責片段?

+0

那麼從你提到的應該只有一個片段,所以是什麼讓它如此混亂?調用片段的Activity是Activity,還是試圖以編程方式從片段中獲取活動名稱? – OBX

+0

@Superman該項目有幾十個片段和數十個活動。我想知道如何找出哪個活動調用了一個片段,以便我可以將配置選項傳遞給片段。 –

+0

那麼,正如@Charlie在答案中提到的那樣,您必須手動查找em。你只是提到片段,碎片可以在很大程度上定製,多少活動和片段要精確? – OBX

回答

1

這取決於哪個Activity啓動Fragment。

爲了添加的片段,很可能你的一些類似的代碼:

// Here we have the fragment, but it isn't bound to an activity. 
Fragment fragment = new MyFragment(); 

// Here the fragment will be bound to the activity. 
FragmentTransaction transaction = getFragmentManager() 
     .beginTransaction() 
     .replace(R.id.container, fragment) 
     .commit(); 

一旦片段結合到活動中,片段的getActivity()方法將返回活動。

如果它沒有綁定到一個活動,getActivity()將返回null。

如果你開始從在MainActivity片段,並且希望在活動訪問的方法,你可以寫在片段如下:

((MainActivity) getActivity()).myCustomMethod(); 

要編寫安全的代碼,避免了可能是NullPointerException或ClassCastException如果片段以不同的方式使用:

if (getActivity() != null && getActivity() instanceof MainActivity) { 
    ((MainActivity) getActivity()).myCustomMethod(); 
}