【问题标题】:fragment onCreateView called many times多次调用片段 onCreateView
【发布时间】:2014-04-23 15:24:53
【问题描述】:

我正在附加Activity 的片段(许多片段到FrameLayout),每个片段在onCreateView() 中都有自己的视图。

现在,

如果我旋转屏幕横向/纵向,则调用片段的onCreateView(),而不是调用其附加的活动的onCreate() 方法。因此,视图被渲染了两次。

我希望每次配置更改时都调用 Activity 的 onCreate()。有可能吗?

活动: MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    getSupportFragmentManager().beginTransaction()
        .add(R.id.layout_replace, new MyFragment()).commit();
}

片段: MyFragment.java

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {         
    return (ScrollView)inflater.inflate(R.layout.some_layout, container, false);
}

【问题讨论】:

  • 旋转时,Activity 被销毁并启动。如果附加了Fragment,则将调用onCreateView()。你能展示你的代码的一部分吗?
  • @FlorianMacLanglade 我已经更新了我的示例代码
  • 是否需要动态添加片段?如果没有,您可以直接在布局 xml 中声明片段。
  • 它必须动态添加

标签: android android-fragments android-activity


【解决方案1】:

解决了这个问题!

实际问题出在FragmentTransaction 上,我使用.add() 添加片段,这会导致视图被填充两次。

改为使用:

.replace(R.id.yourId, fragment)

【讨论】:

  • 哇。为我节省了很多时间。谢谢@yashhy。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多