假设我有一个导航抽屉,其中包含三个菜单项,即cat1,cat2和cat3。每当用户单击此按钮时,它将打开一个片段,该片段将从Web服务器中获取数据并解析JSON数据并显示在回收者视图中。

现在我的问题是。
我是否需要为导航抽屉的每个菜单项(即cat1,cat2和cat3)创建单独的片段?或者我可以使用一个片段并传递这样的参数
http://example.com?cat=1到该片段并加载回收者视图项?

那么,要实现此目标,我应该遵循哪个程序,为每个菜单项分配单独的片段或单个片段?谢谢。

最佳答案

您绝对应该使用单个片段,并避免使用一些样板代码。这是您应该如何做:

public class CategoryFragment extends Fragment {
    public static CategoryFragment newInstance(int categoryId) {
        CategoryFragment fragment = new CategoryFragment();
        Bundle extras = new Bundle();
        extras.putInt("categoryId", categoryId);
        fragment.setArguments(extras);
        return fragment;
    }
    ...
    // Determine which category you're on
    private int getCategoryId() {
        return getArguments().getIntExtra("categoryId", 1);
    }
}


要实例化片段,您可以简单地使用:

// Construct a cat2 fragment
CategoryFragment categoryFragment = CategoryFragment.newInstance(2);

10-04 19:25