Android 方向更改后,碎片的选项菜单不';不要消失
我根据本教程实现了我的布局: 区别在于:Android 方向更改后,碎片的选项菜单不';不要消失,android,screen-orientation,Android,Screen Orientation,我根据本教程实现了我的布局: 区别在于: 根据左边的选择,我有不同的片段要展示 名单 “细节片段”(右边的片段)有不同的选项菜单 我的问题是,如果我已经从左侧选择了某个选项,然后将手机旋转到纵向,则最后一个选项菜单仍然存在并且可见 我认为问题来自方向更改后重新创建的最后一个活动“细节”片段。为了测试它,我创建了以下两种方法: @Override public void onStart() { super.onStart(); setHasOptionsMenu(true);
- 根据左边的选择,我有不同的片段要展示 名单
- “细节片段”(右边的片段)有不同的选项菜单
@Override
public void onStart() {
super.onStart();
setHasOptionsMenu(true);
}
@Override
public void onStop() {
super.onStop();
setHasOptionsMenu(false);
}
我展示了正确的片段,如下所示:
case R.id.prefs_medicines:
if (mDualPane) {
// Check what fragment is shown, replace if needed.
View prefsFrame = getActivity().findViewById(R.id.preferences);
if (prefsFrame != null) {
// Make new fragment to show this selection.
MedicineListF prefF = new MedicineListF();
// Execute a transaction, replacing any existing
// fragment with this one inside the frame.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.preferences, prefF);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
} else {
// Otherwise we need to launch a new activity to display
// the dialog fragment with selected text.
Intent intent = new Intent();
intent.setClass(getActivity(), MedicinePrefsActivity.class);
startActivity(intent);
}
break;
在我的一个“细节”片段中。当我调试它时,在旋转之后调用onstart
图片中的问题:
1:在景观方面没问题
2:纵向:选项菜单不需要
如何在纵向模式下取消optionsmenu?我也遇到了同样的问题,只有当savedInstanceState为空时,才在片段中设置setHasOptionsMenu(true)来解决这个问题。如果onCreate获得一个bundle,那么片段将以方向更改为纵向的方式恢复,因此不显示菜单
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null) {
setHasOptionsMenu(true);
}
}