处理20多种不同静态布局的最有效方法是什么?

时间:2016-08-09 01:20:35

标签: android android-fragments fragment

现在我正在创建一个应用程序,要求我有大约20个或更多不同的页面/布局,一次加载一个,但它们之间很少/没有相互通信。他们会非常静止。现在我有了一个活动的想法,一个片段会在onCreateView中膨胀不同的布局,每次用户选择另一个页面时都会重新加载片段。但是我刚才意识到这根本不起作用,因为我不能将onCreateView的return语句放在if语句中,也没有解决方法。

所以现在我不知道最有效的方法。没有20多个布局和20多个类,每个页面一个是理想的。这似乎非常多余。

1 个答案:

答案 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();