簡體   English   中英

如何改進隱藏/顯示NavigationView菜單項的方法?

[英]How to Improve the way to Hide/Show NavigationView menu Items?

我想知道如何改進我在我的應用程序中處理菜單項訪問的方式。

首先,我有一個用戶登錄的登錄活動,如果成功,它會檢索他可以訪問的所有菜單項的列表。

然后在每個活動中,我需要運行該方法來隱藏用戶無法訪問的菜單項。

其名為setMenus和List listaMenuMuestra是在Login Activity中獲得的列表

public void setMenus(List<ListaMenu> listaMenuMuestra){
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        Menu nav_menu = navigationView.getMenu();
        for(int i = 0; i < listaMenuMuestra.size(); i++){
            try{
                int idMenu = getResources().getIdentifier(listaMenuMuestra.get(i).getIdMenu(), "id", getPackageName());
                nav_menu.findItem(idMenu).setVisible(true);
            }catch (Exception ex){
                Log.d("error","error");
            }
        }

這是我的activity_main_drawer.xml 默認情況下,所有項目都是不可見的。

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_inicio"
            android:icon="@drawable/ic_menu_home"
            android:title="Inicio"
            android:visible="false"/>

        <item
            android:id="@+id/nav_ultimas"
            android:icon="@drawable/ic_menu_send"
            android:title="Últimas consultas"
            android:visible="false"/>

    </group>
    <item android:title="Estadísticas"
        android:id="@+id/nav_tituloestadisticas"
        android:icon="@drawable/ic_insert_chart">
        <menu>
            <item
                android:id="@+id/nav_torta"
                android:icon="@drawable/ic_pie_chart"
                android:title="Gráfico de torta"
                android:visible="false"/>
            <item
                android:id="@+id/nav_lineal"
                android:icon="@drawable/ic_show_chart"
                android:title="Análisis por fechas"
                android:visible="false"/>
        </menu>
    </item>


</menu>

我面臨的“問題”是我有很多活動,對我來說,在每個Activity上運行setMenus似乎很奇怪。

所以問題是有沒有更好的方法來處理多個活動和NavigationDrawer的菜單項訪問? 只能調用setMenus一次並在所有活動中保留這些更改嗎?

為什么不進行擴展到AppCompatActivity的自定義活動並覆蓋onResume()方法來調用setMenus()

class MenuCheckerActivty: AppCompatActivity() {

  override fun onResume(){
     super.onResume()
     setMenus(listaMenuMuestra)
  }
}

現在,在您的正常活動中,將其擴展到MenuCheckerActivity創建的MenuCheckerActivity

class MainActivtity: MenuCheckerActivity {

}

由於我們已經覆蓋了MenuCheckerActivityonResume()MenuCheckerActivity只要調用super.onResume()就會調用setMenus()函數。 沒有測試過代碼,但很確定它澄清了這個概念。 希望能幫助到你。

暫無
暫無

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

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