2013-07-16 38 views
7

我正在创建一个在ListView中显示数据的应用程序。数据分为两种类型(热门,收藏夹)。我有一个活动和两个碎片。碎片显示基于其类别的项目列表。我为此使用了一个ListView。然后,我有两个fragment_layouts,它们在设计上完全相同,但具有不同的视图ID,即TextView的tvId1和tvId2。碎片中的代码仅在引用布局中对应的布局和视图时有所不同。我从JSON格式的URL中获取数据。但是每个类别都有一组不同的URL,它们只会产生不同的数据。然后我解析每个Fragment上相应的URL并相应地填充ListView。一切工作到目前为止。Android - 多次实例化片段?

我想知道的是,有没有一种方法可以使用一个片段并在每个片段中使用两次不同的数据集?这样,如果出现新的类别,我不必创建另一个片段。

感谢任何帮助。

回答

10

当然可以。事实上,你应该这样做。

当您创建片段时,请不要使用new Fragment(); 创建一个静态newInstance函数,将数据作为参数。

public static MyFragment newInstance(int type) { 
    MyFragment fragment = new MyFragment(); 
    Bundle args = new Bundle(); 
    args.putInt("type", type); 
    fragment.setArguments(args); 
    return fragment; 
} 

然后你就可以使用下面得到的onCreate()的类型的方法:

getArguments().getInt("type"); 

然后你得到的类型,可以相应地打电话给你的web服务,然后你可以设置Views因此。

+0

非常感谢。像魅力一样工作。给我留下了很多麻烦。我会投票,但我还没有足够的声望。 – user2469412

+0

没问题。 :)快乐的编码。 – tasomaniac