2016-04-18 11 views
2

Ich habe eine ToolBar (android.support.v7.widget.Toolbar), die 2 clickble Icons hat, die ihre eigenen Ansichten anzeigen sollen.Android Toolbar, wie man Fragmente versteckt und zeigt

dachte ich, dass, die die Hauptaktivität der Symbolleiste gehostet, und hielt die onCreateOptionsMenu(), onOptionItemSelected() etc Methoden, dann 2 -Fragmente haben sollte, um die Symbole entspricht. Wenn ich also auf ein Symbol und dann auf ein anderes klicke, sollten die relevanten Fragmente ausgeblendet werden. Ist das der richtige Weg, um vorwärts zu gehen? Oder soll ich Absichten verwenden?

Ich dachte auch, einen FragmentStatePager-Adapter mit einem ViewPager zu verwenden, aber ich bin mir nicht sicher, ob das eine Möglichkeit ist, da dies eine ToolBar ist und kein separater Gleitmechanismus von Fragment A -> Fragment B und umgekehrt.

+1

Verwenden Sie einfach zwei Fragmente, und führen Sie in 'onOptionItemSelected()' eine FragmentTransaction durch, wenn Sie zu dem anderen Fragment wechseln müssen. –

Antwort

0

eine FrameLayout in Ihrer Aktivität hinzufügen:

<FrameLayout 
    android:id="@+id/content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

und dann die Fragmente tauschen, wenn ein Toolbar-Schaltfläche geklickt wird, wie folgt aus:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if(id == R.id.menu_item_1) { 
     getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.content_frame, fragment1) 
      .commit(); 
    } else if(id == R.id.menu_item_2) { 
     getSupportFragmentManager() 
      .beginTransaction() 
      .replace(R.id.content_frame, fragment2) 
      .commit(); 
    } 

    return super.onOptionsItemSelected(item); 
} 

Natürlich werden Sie Ihre Fragmente init vorher müssen und wahrscheinlich eine Überprüfung hinzufügen, um festzustellen, ob ein bestimmtes Fragment bereits angezeigt wird, bevor Sie eine Transaktion ausführen.

+0

danke, Ihr Beispiel hat mir geholfen, meine Lösung zu erreichen – reyyez

Verwandte Themen