2016-03-22 14 views
0

Ich habe eine Navigationsansicht für die ich diesen Schalter verwenden, um mein Fragment auf dem Element zu ändern, je nach Auswahl:Prüfen Sie, welches Fragment Android ausgewählt ist

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; 

} 

Ich mag überprüfen, ob das ausgewählte Fragment „Podium“ oder was auch immer, wie kann ich das tun? Ich habe so etwas wie if fragment == new Podium() oder if fragment == Podium versucht, aber ich kann nicht herausfinden, wie zu prüfen, welches Fragment ausgewählt und dann angezeigt wird.

Antwort

2

Nicht ganz sicher, welche Verwendung Sie dafür haben, weil Sie nie die Fragment-Variable verwenden, aber Sie können instanceof verwenden, um zu überprüfen, welcher Objekttyp eine Variable ist.

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

Alternativ können Sie speichern alle new Fragment()-Instanzen in einem List<Fragment>, dann nur einen Integer-Wert verwenden, um zu wissen, welches ausgewählt ist.

Gehen Sie einfach durch Ihren Switch-Fall, zum Beispiel, wie so

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; 

Dann fragmentList.get(position) ist immer derjenige ausgewählt.

+0

Danke, es ist perfekt! – Jey10

2

Eine weitere brauchbare Lösung wäre es, wie durch seinen TAG vergleichen, wenn Sie hinzugefügt oder ersetzt ihn mit dem fragmentManager, ich nehme an Dich einen Tag in dem Fragmente Transaktion hinzugefügt:

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

Diese Aussage erfordert, dass Sie das hat, TAG als Konstante:

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