0

大家好,我有点卡在某事上,我认为我在方向改变期间处理片段和活动的方式上弄错了一个概念。基本上,我在一个活动中有 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()。

所以我的问题

  1. 这是在屏幕方向处理片段和活动的正确方法吗?

  2. 如果我在我的片段中覆盖 onsavedInstanceState,活动中会调用什么特定方法?

对不起,如果我的问题到处都是,但这让我很困惑!在方向变化中保持片段状态的实际过程是什么。谢谢你。

4

1 回答 1

0

您是否在布局中为您的片段使用 xml?确保水平和垂直布局的布局都定义了片段

于 2012-12-11T18:36:13.217 回答