2014-11-20 3 views
2

можно легко обнаружить, когда Fragments прикреплены к Activity через Activity.onAttachFragment()Android обнаружить, когда фрагмент отсоединяется

Но как я могу обнаружить в Activity, что некоторые Fragment отсоединяется от деятельности? не Там будет не Activity.onDetachFragment()

ли subcclasing Fragment и написать код, чтобы уведомить Activity о том, что состояние является единственным решением?

ответ

4

вы можете использовать интерфейс для обмена данными между Fragment и Activity

что-то вроде этого:

public Class MyFragment extends Fragment { 
    FragmentCommunicator communicator; 
    public void setCommunicator(FragmentCommunicator communicator) { 
     this.communicator = communicator; 
    } 
    @Override 
    public void OnDetach() { 
     communicator.fragmentDetached(); 
    } 
    ... 

    public Interface FragmentCommunicator { 
     public void fragmentDetached(); 
    } 
    } 

и в своей деятельности:

public Class MyActivity extends Activity Implements FragmentCommunicator { 
    ... 
    MyFragment fragment = new MyFragment(); 
    fragment.setCommunicator(this); 
    ... 
    @Override 
    public void fragmentDetached() { 
     //Do what you want! 
    } 
} 

Edit:

новый подход устанавливает экземпляр интерфейса в onAttach.

public void onAttach(Activity activity) { 
    if (activity instanceof FragmentCommunicator) { 
     communicator = activity; 
    } else { 
     throw new RuntimeException("activity must implement FragmentCommunicator"); 
    } 
} 

теперь нет необходимости иметь setCommunicator метод.

2

У вас есть обратный вызов в жизненном цикле фрагмента. onDetach() вызывается, когда фрагмент больше не привязан к действию.

Смежные вопросы