Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在导航抽屉中加载具有不同参数的单个片段_Java_Android_Android Fragments - Fatal编程技术网

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

Java 在导航抽屉中加载具有不同参数的单个片段,java,android,android-fragments,Java,Android,Android Fragments,假设我有一个导航抽屉,其中包含三个菜单项,即cat1、cat2和cat3。每当用户点击它,它就会打开一个片段,从web服务器获取数据,解析JSON数据,并显示在recycler视图中 现在我的问题是。 是否需要为导航抽屉的每个菜单项(即cat1、cat2和cat3)创建单独的片段?或者我可以使用一个片段,然后像这样传递一个参数 http://example.com?cat=1加载到该片段并加载回收器视图项 那么,我应该遵循哪一个过程来实现这个目标,每个菜单项的单独片段还是单个片段?谢谢。在这种情

假设我有一个导航抽屉,其中包含三个菜单项,即cat1、cat2和cat3。每当用户点击它,它就会打开一个片段,从web服务器获取数据,解析JSON数据,并显示在recycler视图中

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


那么,我应该遵循哪一个过程来实现这个目标,每个菜单项的单独片段还是单个片段?谢谢。

在这种情况下,您应该只使用一个片段。这就是如何通过为每个类别cat1、cat2、cat3仅使用一个片段来重用设计和代码。
您可以通过bundle将category id传递给片段。检查教程

在这种情况下,您应该只使用一个片段。这就是如何通过为每个类别cat1、cat2、cat3仅使用一个片段来重用设计和代码。
您可以通过bundle将category id传递给片段。检查教程

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

如果您希望每次单击一个类别时获取数据,最好有一个片段并使其调用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);

您肯定应该使用单个片段,并避免使用一些样板代码。以下是您应该如何做到这一点:

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

是的,我想是的。因此,为每个类别创建一个新片段需要更多的文件。谢谢你的回答。是的,我想是的。因此,为每个类别创建一个新片段需要更多的文件。谢谢你的回答。谢谢你的回答。现在我明白了。谢谢你的回复。现在我明白了。