アクションバーのアイコンをクリックしてポップアップメニューを表示した後、ポップアップメニュー項目をクリックし、Javaコードのトーストメッセージが状態を変えることを示します偽から真に。問題は、ポップアップメニューを再び開いたときにアイテムがクリックされないということです。また、ポップアップメニュー項目をクリックすると、状態が偽から真に変化することが常に示されます。ポップアップメニュー項目のAndroidのクリックがポップアップメニューに表示されない
誰にもこの問題のコードソリューションがありますか?
ありがとうございました。
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);
}
menu_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>
これを参照してください:http://stackoverflow.com/questions/3040374/runtimeexception-your-content-must-have-a-listview-whose-id-attribute-is-andro – rafsanahmad007
Logcat出力を無視してください。間違って投稿され、この投稿とは関係ありません。アプリはLogcatに出力を表示していません。 – user2308699