Android检测片段何时分离

Dom*_*icz 2 android

我可以很容易地检测到什么时候Fragments连接到ActivityviaActivity.onAttachFragment()

但我如何才能发现Activity有些Fragment与活动分离?没有Activity.onDetachFragment()

是否使用subcclasing Fragment并编写一些代码来通知Activity该状态是唯一的解决方案?

Moh*_*ani 8

你可以使用接口在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();
     }
  }
Run Code Online (Sandbox Code Playgroud)

在你的活动中:

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

编辑:

新方法是设置接口实例onAttach.

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

现在没有必要有setCommunicator方法.