【问题标题】:show currently visible fragment in orientation change gives empty/null view android在方向更改中显示当前可见的片段给出空/空视图android
【发布时间】:2012-12-11 18:30:36
【问题描述】:

大家好,我有点卡在某事上,我认为我在方向改变期间处理片段和活动的方式上弄错了一个概念。基本上,我在一个活动中有 3 个片段,通过页脚通过框架布局动态加载。默认情况下,当应用程序启动时,会显示第一个 Fragment,这意味着无论何时销毁和创建 Activity,都会显示第一个 Fragment。现在我想要的是在方向改变之前的当前可见片段在使用不同的 UI 布局的方向改变之后可见。但是当我尝试显示片段或任何其他内容时,我得到了 Null 视图。

在我的 Activity 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,那么在活动中调用了哪些特定方法?

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

【问题讨论】:

    标签: android


    【解决方案1】:

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

    【讨论】:

    • 不是动态添加我的片段。仅使用框架布局作为容器
    • 如果您不更改布局,为什么要覆盖 onConfigurationChanged 方法?
    • 谢谢!我刚刚检查并删除了线路,它运行良好。也许你可以编辑你的答案,这样我就可以标记它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 2013-12-31
    • 2023-03-06
    相关资源
    最近更新 更多