简体   繁体   中英

Java android Add dynamically item to menu

I want to added to menu item but a user can choose what he want to see or hide , but I don't know how I can do it . I did this :

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:title="NARZĘDZIA">
        <menu>
            <item
                android:id="@+id/show_point"
                android:icon="@drawable/point"
                android:title="Pokaż wybraną pozycję obiektu" />
            <item
                android:id="@+id/sync"
                android:icon="@drawable/sync"
                android:title="Pojedyńcze odpytanie" />
            <item
                android:id="@+id/show_chooce"
                android:icon="@drawable/show_chooce"
                android:title="Pokaż wybrane obiekty" />
            <item
                android:id="@+id/my_location"
                android:icon="@drawable/position2"
                android:title="Moja lokalizacja" />
        </menu>
    </item>

    <item android:title="APLIKACJA">
        <menu>
            <item
                android:id="@+id/settigs"
                android:icon="@drawable/set"
                android:title="Ustawienia aplikacji" />
            <item
                android:id="@+id/about"
                android:icon="@drawable/about"
                android:title="O programie" />
        </menu>
    </item>
</menu>

Now I want to create a Activity in which user can choose what it will be show , but I don't have idea how I can hide this item on menu

you can change java file

//menu intialation
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    menu.clear();

    MenuItem item =
            menu.add(Menu.FIRST, R.id.dashboard_nodifycation, 3, "NODIFICATION");
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    menu.add(Menu.FIRST, R.id.System_log, 4, "LOGOUT");

    dbHelper = new Database_for_GCM_data(Activity_Drawer_Dashboard.this);
    int unread_count = Integer.parseInt(dbHelper.getUnreadCount());
    // calling function for nodification inflater
    item.setIcon(buildCounterDrawable(unread_count, R.drawable.white_nodification, getApplicationContext()));

    return true;
}
public class MyActivity extends AppCompatActivity {

    private Menu mToolbarMenu;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //init menu here
        mToolbarMenu = menu;
        getMenuInflater().inflate(R.menu.toolbar, menu);
        setToolbarMenuItemVisibilties();
        return true;
    }

    private void setToolbarMenuItemVisibilties() {
        final MenuItem menuItem1 = mToolbarMenu.findItem(R.id.item1);
        final MenuItem menuItem2 = mToolbarMenu.findItem(R.id.item2);
        final MenuItem menuItem3 = mToolbarMenu.findItem(R.id.item3);
        final MenuItem menuItem4 = mToolbarMenu.findItem(R.id.item4);

        //Set visibilities
        menuItem1.setVisible(true);
        menuItem2.setVisible(true);
        menuItem3.setVisible(false);
        menuItem4.setVisible(false);
    }
}

you can change visibilities any time in activity, but you have to inflate it first

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM