Android + 使用片段 xml 阻止 addToBackStack?
Android + Prevent addToBackStack with fragment xml?
我有 2 个横向片段,1 个纵向片段。我正在通过 xml 方法加载所述片段。无论如何,我正在检查第一个 activity 中是否存在第二个片段,然后启动第二个片段的 activity 或直接在第二个片段上调用方法。一切正常,但是,当用户最初旋转(创建两个片段)然后旋转回来时,我对第二个片段的检查现在不为空,并且在将其添加到后台堆栈时破坏了逻辑。
如何解决?我是否需要从 onPause() 的历史堆栈中删除片段?或者可能会阻止第二个片段以某种方式添加到后台堆栈。
第一个活动:
public void onClick(View view) {
SecondFragment secondFragment = (SecondFragment) getSupportFragmentManager().findFragmentById(R.id.second_fragment);
if (secondFragment != null) { // * this will no longer be not null after rotating
// two pane layout : update second fragment
secondFragment.updateSecondFragmentView();
} else {
// one pane layout : start second activity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
}
}
SecondFragment:你推荐这个吗?
@Override
public void onPause() {
super.onPause();
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
if (secondFragment != null && secondFragment.isVisible()) {
// two pane layout : update second fragment
secondFragment.updateSecondFragmentView();
}
这似乎对我的情况很有效。
我有 2 个横向片段,1 个纵向片段。我正在通过 xml 方法加载所述片段。无论如何,我正在检查第一个 activity 中是否存在第二个片段,然后启动第二个片段的 activity 或直接在第二个片段上调用方法。一切正常,但是,当用户最初旋转(创建两个片段)然后旋转回来时,我对第二个片段的检查现在不为空,并且在将其添加到后台堆栈时破坏了逻辑。
如何解决?我是否需要从 onPause() 的历史堆栈中删除片段?或者可能会阻止第二个片段以某种方式添加到后台堆栈。
第一个活动:
public void onClick(View view) {
SecondFragment secondFragment = (SecondFragment) getSupportFragmentManager().findFragmentById(R.id.second_fragment);
if (secondFragment != null) { // * this will no longer be not null after rotating
// two pane layout : update second fragment
secondFragment.updateSecondFragmentView();
} else {
// one pane layout : start second activity
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
}
}
SecondFragment:你推荐这个吗?
@Override
public void onPause() {
super.onPause();
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
if (secondFragment != null && secondFragment.isVisible()) {
// two pane layout : update second fragment
secondFragment.updateSecondFragmentView();
}
这似乎对我的情况很有效。