2016-03-22 39 views
0

片段我有,我用这个开关根据所选择的项目我的片段更改导航视图:检查所选择的Android

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; 

} 

我要检查,如果选择的片段是“指挥台”或无论哪个,我该怎么做? 我试过类似if fragment == new Podium()if fragment == Podium但我不知道如何检查哪个片段被选中,然后显示。

回答

2

不完全确定你有什么用途,因为你从来没有使用片段变量,但你可以使用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)总是选择之一。

+0

非常感谢! – Jey10

2

另一种可行的解决办法是由它的标签,当您添加或与fragmentManager取代它来比较,我supose您添加的片段交易标签:

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

该声明需要你有TAG作为常量:

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