我正在开发一个应用程序,它有一个“艺术家列表”,一个包含大量乐队、表演者和/或作曲家的列表。它们按流派和相对受欢迎程度排序。
从主要活动您转到一个“乐队列表”活动,其中有两个选项卡。其中一个是“流派”选项卡,其中包含一般音乐流派的列表,当您单击每种流派时,您会被发送到其中也有两个选项卡的相应活动。第一个是“所有”选项卡,另一个是“流行”选项卡。每个选项卡都包含一个片段,其中包含一个过滤的 sqlite 数据库(“过滤”是指我有一个大数据库,它被过滤以在不同的片段中显示我想要的内容,而不是为每个片段/流派使用一个新数据库)。所以现在我有 7 个流派和 14 个类;
我现在想做的是将类的数量减少到只有两个(全部/流行),或者如果可能的话,甚至一个,通过再次过滤数据库为所有列表回收相同的片段。为了做到这一点,我需要从“流派”片段中发送一个字符串,其中包含按下的列表项(流派)的位置到包含“所有”和“流行”选项卡(片段)的活动,然后将该字符串进一步发送到片段,片段将使用它来过滤 sqlite 数据库。
我需要补充一点,我当然已经阅读了关于片段通信的 Android 开发人员指南,但我不知道如何在我的代码中使用他们的方法,因为我创建的片段有点不同,包括没有在xml,因此我不知道如何使用他们的getSupportFragmentManager().findFragmentById(R.id.article_fragment);
方法以及更多类似的东西。
这是我创建所有片段的 TabListener:
public class TabListener<T extends Fragment> implements ActionBar.TabListener {
private Fragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
public TabListener(Activity activity, String tag, Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
}
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if (mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (mFragment != null) {
ft.detach(mFragment);
}
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
}
谢谢,
阿莱克萨