检查选择哪个片段Android

时间:2016-03-22 20:45:49

标签: android if-statement android-fragments

我有一个导航视图,我使用此开关根据所选项目更改我的片段:

Fragment fragment = null;
String title = getString(R.string.app_name);

switch (viewId) {
    case R.id.nav_random:
        fragment = new Random();
        title = "RANDOM";

        break;
    case R.id.nav_podium:
        fragment = new Podium();
        title = "PODIUM";
        break;
    case R.id.nav_sport:
        fragment = new Sport();
        title = "SPORT";
        break;
    case R.id.nav_videogames:
        fragment = new Games();
        title = "GAMES";
        break;
    case R.id.nav_socialnetwork:
        fragment = new SocialNetwork();
        title = "SOCIAL NETWORKS";
        break;
    case R.id.nav_heart:
        fragment = new Heart();
        title = "FAVORITES";
        break;

}

我想检查所选片段是“Podium”还是其他任何一个,我该怎么做? 我尝试了类似if fragment == new Podium()if fragment == Podium的内容,但我无法弄清楚如何选择然后显示哪个片段。

2 个答案:

答案 0 :(得分:2)

不完全确定你有什么用途,因为你从不使用Fragment变量,但你可以使用instanceof来检查变量的对象类型。

if (fragment instanceof Podium) {
  // it's a Podium
}

或者,您可以将所有new Fragment()个实例存储在List<Fragment>中,然后只使用整数值来了解选择了哪一个。

只需通过你的交换机案例,就像这样

case R.id.nav_random:
    fragment = new Random();
    title = "RANDOM";
    position = 0;
    break;
case R.id.nav_podium:
    fragment = new Podium();
    title = "PODIUM";
    position = 1;
    break;

然后fragmentList.get(position)始终是所选的。

答案 1 :(得分:2)

另一个可行的解决方案是将其与TAG进行比较,就像您在使用fragmentManager添加或替换它时一样,我假设您在片段事务中添加了一个标记:

fragment.getTag().equals(Random.TAG)

该声明要求您将TAG作为常量:

public class Random extends Fragment {
    public static final String TAG = "RANDOMFRAG";
}