9

W jaki sposób udostępniamy Drawer ze wszystkimi działaniami?Udostępnianie NavigationView ze wszystkimi działaniami?

W lister: onNavigationItemSelected z setNavigationItemSelectedListener możemy uzyskać id i przejść do niego. Co szukam jest coś takiego:

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; 
     ... 
     } 
     ... 

wiem, że mogę zrobić wszystko menuItems dodatek/wymienić Fragment, ale potem obchodzenia fragmenty i zarządzanie pamięcią jest duży ból.

Zamiast tego chcę, aby każdy menuItem wybrał/kliknął, aby wywołać Activity. tj. każdy MainMenuItem ma mieć Activity, a te będą zawierać fragmenty o złożonych układach.

Wszystko co chcę zrobić, to mieć każdy główny element menu być Activity zamiast Fragment.

Wszystkie te działania mogą mieć ten sam numer DrawerNavigation.

Czy to jest zalecany sposób? Lub czy zawsze dodajemy Fragments dla kliknięć pozycji ?

Czy powinienem dodać NavigationView do BaseActivity, a następnie rozszerzyć wszystkie działania?

Following this new guide about Support Design lib

+1

tak, powinieneś "dodać NavigationView do BaseActivity, a następnie rozszerzyć wszystkie działania stamtąd" – pskink

Odpowiedz

0

jestem trochę zdezorientowany również tutaj. Po znalezieniu bardzo mało informacji na ten temat próbowałem rozszerzyć moją podklasę, ale nie zrobiłem nic. MainActivity ma w pełni funkcjonalny NavigationView, który będzie nawigował do każdej aktywności. Pozostaje tylko udostępnianie jej każdemu działaniu.

+0

Ja również dodałem kod nawigacyjny w BaseActivity, ale wtedy coś jest nie tak. Ponieważ każda czynność, która rozszerza BaseActivity, będzie miała nadmiarowy kod i każde działanie będzie przetwarzało te informacje. Mogę się mylić, ale czy to jedyne wyjście? – Rinav

+0

Aktywność nadrzędna powinna implementować interfejs 'NavigationView.OnNavigationItemSelectedListener', aby działania podrzędne dziedziczyły funkcjonalność nawigacji menu' public boolean onNavigationItemSelected (element MenuItem) '. – Mussa

2

Znalazłem odpowiedź korzystając this SO answer

Rozszerzenie jest właściwa droga. Wystarczy przesłonić setContentView we właściwy sposób ...

Powiązane problemy