簡體   English   中英

Android中的導航抽屜重新加載問題

[英]Navigation drawer reload issue in android

我的應用程序中有一個導航抽屜。 我想在按鈕水龍頭上更改導航抽屜布局。 但是每次我切換布局時,它只是被添加到現有的導航抽屜中(顯示重復的條目),但是我想將整個視圖替換為新視圖。

我該如何執行呢?

請參考我的代碼

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

在這里,根據checkIsLoggedIn()的狀態,代碼中的activity_main_drawer_logged_in和activity_main_drawer_logged_out都已膨脹。

問題:如果我在導航抽屜顯示登錄布局時從應用程序注銷

然后,activity_main_drawer_logged_out和activity_main_drawer_logged_in布局的內容都顯示在導航抽屜中。

對您的代碼進行這些更改

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

使用上述答案時出現問題。 顯示重復的標題視圖

我發現了一個更好的解決方案,用於在導航視圖標題重復的同時動態添加標題視圖。 這是代碼片段。

if (navigationView != null) {
   for (int i = 0; i < navigationView.getHeaderCount(); i++) {
   if (navigationView.getHeaderView(i) != null)
   navigationView.getHeaderView(i).setVisibility(View.GONE);
   }
   addHeaderLayout(navigationView);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM