多次调用片段 onCreateView
Posted
技术标签:
【中文标题】多次调用片段 onCreateView【英文标题】:fragment onCreateView called many times 【发布时间】: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 中声明片段。
它必须动态添加
【参考方案1】:
解决了这个问题!
实际问题出在FragmentTransaction
上,我使用.add()
添加片段,这会导致视图被填充两次。
改为使用:
.replace(R.id.yourId, fragment)
【讨论】:
哇。为我节省了很多时间。谢谢@yashhy。以上是关于多次调用片段 onCreateView的主要内容,如果未能解决你的问题,请参考以下文章
从 Fragment 返回时,Flow onEach/collect 被多次调用