弹出菜单项上的Android单击菜单中未显示



我单击"动作栏"上的图标以显示弹出菜单,然后我单击我的Java代码中的弹出菜单项和吐司消息,显示其从false将状态从false更改为true。问题是,当再次打开弹出菜单时,没有单击项目。然后单击弹出菜单项总是显示其从false更改为true。

有人对此问题有代码解决方案吗?

谢谢您的帮助。

Java代码:

@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_action, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_popup) {
        View menuItemView = findViewById(R.id.action_popup);
        PopupMenu popupMenu = new PopupMenu(this, menuItemView);
        MenuInflater inflater = popupMenu.getMenuInflater();
        inflater.inflate(R.menu.popup_menu, popupMenu.getMenu());
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                int id = item.getItemId();
                if (id == R.id.opt1_name) {
                    if (item.isChecked()){
                        item.setChecked(false);
                        Toast.makeText(getApplicationContext(), "Logic Set False= " + item, Toast.LENGTH_SHORT).show();
                    }
                    else{
                        item.setChecked(true);
                        Toast.makeText(getApplicationContext(), "Logic Set True= " + item, Toast.LENGTH_SHORT).show();
                    }

                }
                    else if (id == R.id.opt2_date) {
                    if (item.isChecked()){item.setChecked(false);
                        Toast.makeText(getApplicationContext(), "Logic Set False= " + item, Toast.LENGTH_SHORT).show();
                    }
                    else{item.setChecked(true);
                        Toast.makeText(getApplicationContext(), "Logic Set True= " + item, Toast.LENGTH_SHORT).show();
                    }
                }
                return true;
            }
        });
        popupMenu.show();
    }
return super.onOptionsItemSelected(item);
}

菜单_ACTION.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".PlayerActivity">
        <item android:id="@+id/action_popup" android:title="Sort Popup" android:icon="@drawable/ic_sort"
            android:showAsAction="always" />
        <item android:id="@+id/action_settings" android:title="Settings"
            app:showAsAction="never" />
        <item android:id="@+id/action_help" android:title="Help"
            app:showAsAction="never" />
</menu>

popup_menu.xml

<?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <group android:checkableBehavior="single">
            <item
                android:id="@+id/opt1_name"
                android:title="Name" />
            <item
                android:id="@+id/opt2_date"
                android:title="Date" />
        </group>
    </menu>

检查错误,如果您检查了错误,则必须在Mainlist.xml文件中具有一个 @android:id/list

的ID中的一个listView
<ListView
    android:id="@android:id/list"
    android:layout_height="wrap_content"
    android:layout_height="fill_parent"/>

最新更新