我想知道,这是创建Fragment
的更好/推荐的方法吗?通过Java代码创建还是通过XML创建?
<FrameLayout
android:id="@+id/menu_frame"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="left|start" />
if (savedInstanceState == null) {
FragmentTransaction t = this.getSupportFragmentManager().beginTransaction();
this.homeMenuFragment = HomeMenuFragment.newInstance();
t.replace(R.id.menu_frame, homeMenuFragment);
t.commit();
} else {
this.homeMenuFragment = (HomeMenuFragment)(this.getSupportFragmentManager().findFragmentById(R.id.menu_frame));
}
<fragment
android:id="@+id/menu_frame"
android:name="org.yccheok.xxx.HomeMenuFragment"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="left|start" />
this.homeMenuFragment = (HomeMenuFragment)(this.getSupportFragmentManager().findFragmentById(R.id.menu_frame));
对我来说,既然两者都取得了相同的结果,那么通过XML代码创建似乎更好。在任何情况下,我们应该更喜欢通过Java代码创建吗?
答案 0 :(得分:2)
无法分离/删除在XML布局中静态定义的片段。这是主要区别。如果您不需要这样做,那么请随意在XML中声明它。
答案 1 :(得分:1)
你的帖子让我想到...... 嗯,通过XML布局创建片段的一个显而易见的事情是片段是静态的,因此无法通过Java代码进行更改。也许你很好。让我们继续吧。
使用Java代码的好处:
通过newInstance()
传递数据的能力。例如,它可能是HomeMenuFragment.newInstance(param1, param2, ...)
。
使用FragmentTransaction
,您可以添加到Backstack。