大家好,我有点卡在某事上,我认为我在方向改变期间处理片段和活动的方式上弄错了一个概念。基本上,我在一个活动中有 3 个片段,通过页脚通过框架布局动态加载。默认情况下,当应用程序启动时,会显示第一个 Fragment,这意味着无论何时销毁和创建 Activity,都会显示第一个 Fragment。现在我想要的是在方向改变之前的当前可见片段在具有不同 UI 布局的方向改变之后可见。但是当我尝试显示片段或任何其他内容时,我得到一个空视图。
在我的活动 onCreate 我有这个:
if(savedInstanceState != null){
switchTag = savedInstanceState.getString(SAVED_CURRENT_FRAGMENT_STATE);
Log.d(TAG, "fragment after orientation is " + switchTag);
displayCurrentFragment(switchTag);
}else {
dashboardfragment = new DashBoardFragment();
ft.add(R.id.dashboard_fragment_container_id, dashboardfragment, DASHBOARD_FRAG_TAG);
ft.commit();
}
我在活动中覆盖 onSaveInstanceState 和 onConfigurationChanged:
@Override
public void onSaveInstanceState(Bundle outState) {
Log.d(TAG, "OnSavedInstance() on dashboard activity");
outState.putString(SAVED_CURRENT_FRAGMENT_STATE, switchTag); // to save the current visible fragment
super.onSaveInstanceState(outState);
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.dashboard_layout); // same as oncreate
}
我也覆盖了片段中的 OnsaveInstanceState()。
所以我的问题
这是在屏幕方向处理片段和活动的正确方法吗?
如果我在我的片段中覆盖 onsavedInstanceState,活动中会调用什么特定方法?
对不起,如果我的问题到处都是,但这让我很困惑!在方向变化中保持片段状态的实际过程是什么。谢谢你。