9

Wie teilen wir Drawer mit allen Aktivitäten?Navigationsansicht mit allen Aktivitäten teilen?

In den Lister: onNavigationItemSelected von setNavigationItemSelectedListener können wir die id und navigieren Sie zu ihm. Was ich suche ist so etwas wie dieses:

private void initDrawerLayout() { 
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

     NavigationView navView = (NavigationView) findViewById(R.id.navigation_view); 
     navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 


     Intent intent; 
     int id = menuItem.getItemId(); 

     switch(id) { 

      case R.id.home: 
      case R.id.drawer_home: 
      // call activity instead of adding/replacing fragment 
      return true; 

      case R.id.drawer_gallery: 
      // call activity instead of adding/replacing fragment 
      intent = new Intent(MainActivity.this, GalleryActivity.class); 
      startActivity(intent); 
      return true; 

      case R.id.drawer_about: 
      // call activity instead of adding/replacing fragment 
      intent = new Intent(MainActivity.this, AboutActivity.class); 
      startActivity(intent); 
      return true; 
     ... 
     } 
     ... 

ich ich weiß, alle menuItems Add machen kann/ersetzen Fragment, aber dann Umgang mit Fragmenten und Speicherverwaltung ist ein großer Schmerz.

Stattdessen möchte ich jedes menuItem auswählen/klicken, um Activity aufzurufen. d.h. jeder MainMenuItem hat Activity und diese werden Fragmente mit komplexen Layouts enthalten.

Alles, was ich tun möchte, ist jeder Hauptmenüpunkt ein Activity sein anstelle eines Fragment.

Und alle diese Aktivitäten können die gleichen teilen DrawerNavigation.

Ist dies der empfohlene Weg? Oder fügen wir immer Fragments für NavigationDrawer Element Klicks hinzu?

Sollte ich NavigationView zu BaseActivity hinzufügen und dann alle Aktivitäten von dort aus erweitern ??

Following this new guide about Support Design lib

+1

ja, Sie sollten "NavigationView zu BaseActivity hinzufügen und dann alle Aktivitäten von dort erweitern" – pskink

Antwort

0

Ich bin ein wenig verwirrt, auch hier. Nachdem ich sehr wenig Information darüber gefunden habe, habe ich versucht, meine Unterklasse zu erweitern.

Dies hat jedoch nichts getan. Die MainActivity hat eine voll funktionsfähige NavigationView, die zu jeder Aktivität navigieren wird..Nur übrig bleibt, es mit jeder Aktivität zu teilen.

+0

Ich auch den Navigationscode in BaseActivity hinzugefügt, aber dann fühlt sich etwas falsch an. Da jede Aktivität, die BaseActivity erweitert, über redundanten Code verfügt, verarbeitet jede Aktivität diese Informationen. Ich könnte mich irren, aber ist das der einzige Ausweg? – Rinav

+0

Übergeordnete Aktivität sollte die Schnittstelle "NavigationView.OnNavigationItemSelectedListener" implementieren, damit untergeordnete Aktivitäten die Menü-Navigationsfunktionalität der Methode 'public boolean onNavigationItemSelected (MenuItem item) 'erben. – Mussa

2

fand ich die Antwort this SO answer

Erweiterung ist der richtige Weg verwendet wird. Überschreiben Sie setContentView einfach in der richtigen Weise ...