好吧,我认为它应该像这样简单
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/