2017-05-10 11 views
0

私のアプリケーションにはナビゲーションドロワーがあります。ボタンタップでナビゲーションの引き出しレイアウトを変更したいしかし、私はレイアウトを切り替えるたびに、それは単に既存のナビゲーションドロワに追加されます(重複したエントリが表示されています)が、私は新しいものに全体のビューを置きたいと思います。アンドロイドのナビゲーションドロワーリロード問題

どうすれば実装できますか?

checkIsLoggedInの状態​​ごとにコードに私のコード

navigationView = (NavigationView) findViewById(R.id.nav_view); 
    navigationView.setNavigationItemSelectedListener(this); 
    if (checkIsLoggedIn()){ 
     navigationView.inflateMenu(R.menu.activity_main_drawer_logged_in); 
    } 
    else{ 
     navigationView.inflateMenu(R.menu.activity_main_drawer_logged_out); 
     addHeaderLayout(navigationView); 
     } 

ここで私が膨張しているactivity_main_drawer_logged_inとactivity_main_drawer_logged_outを参照してください()。

問題: ナビゲーションドロワーがログイン

のレイアウトを示している間、私はアプリケーションからログアウトする場合、両方activity_main_drawer_logged_outとactivity_main_drawer_logged_inレイアウトの内容はナビゲーションドロワーに表示されています。

+0

追加の意味は?コード –

+0

を表示するあなたが言っていることは不明です。 – Piyush

答えて

1

は、上記の解答を使用している間、私は問題を抱えていたあなたのコード

if (checkIsLoggedIn()){ 
    navigationView.getMenu().clear(); 
    navigationView.inflateMenu(R.menu.activity_main_drawer_logged_in); 
} 
else{ 
    navigationView.getMenu().clear(); 
    navigationView.inflateMenu(R.menu.activity_main_drawer_logged_out); 
    addHeaderLayout(navigationView); 
    } 
+0

ありがとうございます。それは私のために働いています。しかし重複したヘッダービューが表示されています – EKN

0

にこれらの変更を行います。 重複したヘッダービューが表示されています

動的にヘッダービューを追加しながらナビゲーションビューのヘッダー重複のためのより良い解決策を発見しました。これがコードスニペットです。

if (navigationView != null) { 
    for (int i = 0; i < navigationView.getHeaderCount(); i++) { 
    if (navigationView.getHeaderView(i) != null) 
    navigationView.getHeaderView(i).setVisibility(View.GONE); 
    } 
    addHeaderLayout(navigationView); 
    } 
関連する問題