android - 如何杀死 fragment ?

标签 android android-fragments

好吧,我认为它应该像这样简单

fragmentManager.beginTransaction().replace(R.id.container, otherFragment).commit();

应该这样做,但实际上不是。

甚至 fragmentManager.beginTransaction().remove(fragment); 也没有杀死它。

其他 fragment 加载,但在我试图杀死的 fragment 中有一个 SensorEventListener,即使在 fragment 被替换后它也会继续使用react。我能听到声音和东西。

当然,我可以创建一个 bool 值并切换它,但在我看来应该有另一种方法来简单地销毁这个对象。

这就是我初始化 fragment 的方式:

  public static BaseGameFragment newInstance(int mode) {
      BaseGameFragment.mode = mode;
      BaseGameFragment fragment = new BaseGameFragment();   
        return fragment;
  }

我也尝试调用 onDestroy(); 但它不会停止传感器的 react ,因此不会停止 fragment 中的所有其他进程。

最佳答案

尝试使用标签从交易中删除 fragment 。像这样:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    MyFragment fragment = new MyFragment();
    FragmentManager manager = getFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.add(R.id.mainLayout, fragment, "FragmentTransaction_1");
    transaction.commit();
}

public void getRidOfFragment(View v){
    MyFragment fragment = new MyFragment();
    FragmentManager manager = getFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();
    transaction.remove(manager.findFragmentByTag("FragmentTransaction_1"));
    transaction.commit();
}

关于android - 如何杀死 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376116/

相关文章:

android - 使用 fragment Activity 创建的 ADT 空白 Activity

java - 适配器不更新和更改 recyclerview,notifyDataSetChanged 不工作

使用兼容包的android fragment 动画

android - 错误的屏幕宽度和高度

java - Android:不知道如何使用 setImeActionLabel

Android 2.2 SDK - Nexus One 上的 Camera API setParameters 失败

android - 错误 : Failure processing PNG image in Android

android - 在viewpager中显示预先选择的项目

Android - fragment 中的 SensorEventListener

android - 禁用 fragment 中的后退按钮按下