为什么getChildFragmentManager可以在创建视图之前获取并替换片段?
我有这个代码(继承自以前的开发人员),这成功。
简化代码
public class HostFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
MyFragment myfragment = new MyFragment();
getChildFragmentManager().beginTransaction()
.replace(R.id.framelayout, myfragment).commit();
return inflater.inflate(R.layout.fragment_layout, container, false);
}
}
fragment_layout.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/framelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="10dp">
</FrameLayout>
</LinearLayout>
我对此有点困惑。如果视图不存在,怎么可能?
答案 0 :(得分:1)
是的,你可以。 commit()不会立即运行,它将在onCreateView()之后执行。但你最好在充气后称之为。代码将更清晰。
计划此交易的提交。提交不会立即发生;它将被安排为主线程上的工作,以便在下一次线程就绪时完成。