我有一个导航视图,我使用此开关根据所选项目更改我的片段:
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
的内容,但我无法弄清楚如何选择然后显示哪个片段。
答案 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";
}