2016-10-11 112 views
0

我需要監聽執行片段事務時的情況,例如,當我使用另一個片段替換片段而不調用addToBackStack()時。 FragmentManager類提供了一個addOnBackStackChangedListener回調函數,但是當我在不調用addToBackStack的情況下執行片段替換時,它不會被執行。Android片段事務監聽器

編輯:偵聽操作在只有活動實例及其片段管理器訪問權限的類中執行。

+0

的目的是什麼,你需要嗎? –

+0

對於在碎片被銷燬時執行某些操作的庫。 –

回答

0

您可以使用Fragment的onAttach()方法。

+0

片段事務的偵聽操作在只能訪問活動實例及其FragmentManager的類中執行。我會編輯我的問題來澄清。 –

0

您可以對所有片段使用Base類。然後你可以重寫onDetach()方法。例如

public class BaseFragment extends Fragment { 

@Override 
public void onDetach() { 
    // run code that needed by your library. e.g. 
    if (getActivity() != null && getActivity() instanceof MainActivity) { 
    ((MainActivity)getActivity()).someMethodToDetectOnDetach(); 
    } 
    super.onDetach(); 
} 

然後從BaseFragment擴展您的片段像這樣

public class MyFragment extends BaseFragment { 
// ..... 
} 
+0

您可以在onAttach(上下文上下文)中使用相同的行爲;方法(可能會更好) –

+0

是的,我可以做到這一點,但我正在建立一個庫項目,我不想強​​迫這樣的事情,比如使用基類。但我認爲沒有其他辦法可以做到這一點。 –