现在我正在创建一个应用程序,要求我有大约20个或更多不同的页面/布局,一次加载一个,但它们之间很少/没有相互通信。他们会非常静止。现在我有了一个活动的想法,一个片段会在onCreateView中膨胀不同的布局,每次用户选择另一个页面时都会重新加载片段。但是我刚才意识到这根本不起作用,因为我不能将onCreateView的return语句放在if语句中,也没有解决方法。
所以现在我不知道最有效的方法。没有20多个布局和20多个类,每个页面一个是理想的。这似乎非常多余。
答案 0 :(得分:0)
您可以使用Fragment的捆绑包向其传达要使用的布局。 在Fragment类中,创建一个静态方法来创建Fragment实例并设置它的bundle,例如:
public static MyFragment newInstance(int layoutId) {
MyFragment f = new MyFragment();
Bundle args = new Bundle();
args.putInt("layoutId", layoutId); // e.g. layoutId = R.layout.layout_fragment_01
f.setArguments(args);
return f;
}
然后在片段的onCreateView中,从包中获取布局ID:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(getArguments().getInt("layoutId", 0), container, false);
}
然后,在您的活动中,您将执行以下操作:
MyFragment fragment = MyFragment.newInstance(R.layout.fragment_layout_01);
getFragmentManager().beginTransaction().add(android.R.id.content, fragment).commit();