0

Я следую this ответа на SO, который называется как:панель навигации Освеженный

Изменение NavigationView пунктов при регистрации пользователя

код работает отлично, но содержание NavigationView изменения, когда я перезагрузки приложение. Я хочу, чтобы содержание быть изменен после того, как я нажимаю с входом или выходом item menus

Это мой код в onCreate() метод:

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.addDrawerListener(toggle); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 

     if(islogin()) 
     { 
      navigationView.getMenu().clear(); 
      navigationView.inflateMenu(R.menu.activity_main_drawer1); 
     } else 
     { 
      navigationView.getMenu().clear(); 
      navigationView.inflateMenu(R.menu.activity_main_drawer2); 
     } 
     navigationView.setNavigationItemSelectedListener(this); 
     toggle.syncState(); 

и вот islogin() метод:

public boolean islogin(){ 
// Retrieve data from preference: 
     prefs = getSharedPreferences("UserLoginData", MODE_PRIVATE); 
     String username = prefs.getString("username", null); 
     if (username == null) { 
      return false; 
     } 
     else{ 
      return true; 
     } 
    } 

Любая помощь будет очень ценим! Спасибо

Примечание: хотя этот вопрос кажется дублирующим, но его просто название, содержание совершенно другое.

ответ

0

Хотя я не получил ответа, я размещаю свое решение здесь. Я решил очень простую логику, и ее работа очень велика.

Шаг 1:

я сначала инициализировать Toolbar toolbar; глобально выше класса.

Шаг 2:

Тогда я просто создать простой метод, называемый: myDrawer() и обернуть весь мой Ящик код внутри него. Как это:

public void myDrawer(){ 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); 

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 

    if(islogin()) 
    { 
     navigationView.getMenu().clear(); 
     navigationView.inflateMenu(R.menu.activity_main_drawer2); 
    } else 
    { 
     navigationView.getMenu().clear(); 
     navigationView.inflateMenu(R.menu.activity_main_drawer); 
    } 
    navigationView.setNavigationItemSelectedListener(this); 
    toggle.syncState(); 

} 

Теперь у меня есть руки на судоходстве, и я могу сделать что-нибудь с ним, Как Освежающий и вызов снова и т.д.

Шаг 3:

Я вызываю метод в главном активность, т.е.: OnCreate

myDrawer(); 

Шаг 4:

И я называю это каждый раз, когда я делаю логику Signin и SignOut.

Wow! Он работает как шарм.

PS: Просто для информации цели, Вот мой onNavigationItemSelected, где я могу справиться Нажмите События:

public boolean onNavigationItemSelected(MenuItem item) { 

     int id = item.getItemId(); 
     Intent intent; 
     if (id == R.id.nav_item_item1) { 

      intent = new Intent(MainActivity.this, SomeClass1.class); 
      startActivity(intent); 

     } else if (id == R.id.nav_item_item2) { 
      intent = new Intent(getApplicationContext(), SomeClass2.class); 
      startActivity(intent); 

     } else if (id == R.id.nav_item_logout) { 
      // my other logic for signout 
       myDrawer(); 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

Credits:

User: manish jain Answer

 Смежные вопросы

  • Нет связанных вопросов^_^