我需要監聽執行片段事務時的情況,例如,當我使用另一個片段替換片段而不調用addToBackStack()時。 FragmentManager類提供了一個addOnBackStackChangedListener回調函數,但是當我在不調用addToBackStack的情況下執行片段替換時,它不會被執行。Android片段事務監聽器
編輯:偵聽操作在只有活動實例及其片段管理器訪問權限的類中執行。
我需要監聽執行片段事務時的情況,例如,當我使用另一個片段替換片段而不調用addToBackStack()時。 FragmentManager類提供了一個addOnBackStackChangedListener回調函數,但是當我在不調用addToBackStack的情況下執行片段替換時,它不會被執行。Android片段事務監聽器
編輯:偵聽操作在只有活動實例及其片段管理器訪問權限的類中執行。
您可以使用Fragment的onAttach()方法。
片段事務的偵聽操作在只能訪問活動實例及其FragmentManager的類中執行。我會編輯我的問題來澄清。 –
您可以對所有片段使用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 {
// .....
}
您可以在onAttach(上下文上下文)中使用相同的行爲;方法(可能會更好) –
是的,我可以做到這一點,但我正在建立一個庫項目,我不想強迫這樣的事情,比如使用基類。但我認爲沒有其他辦法可以做到這一點。 –
的目的是什麼,你需要嗎? –
對於在碎片被銷燬時執行某些操作的庫。 –