繁体   English   中英

在导航抽屉中加载具有不同参数的单个片段

[英]Load a single Fragment with different arguments in navigation drawer

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

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

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

在这种情况下,您仅应使用一个片段,这是通过对类别cat1,cat2,cat3仅使用一个片段来复用设计和代码的方法。 您可以通过捆绑包将类别ID传递给片段。 检查教程

如果您想在每次单击类别时获取数据,最好有一个片段并将其调用API。 但是,如果使用三个片段,则除了可以更快地在类别之间切换之外,还可以减少API调用的次数。 但是,它们之间需要权衡。 同样在第二种情况下,您应该关心每次更新从API获取的内容。

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

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM