В моем приложении для Android есть следующий макет меню:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1"
android:titleCondensed="Options"
android:title="Highlight Options"
android:icon="@android:drawable/ic_menu_preferences" />
<item android:id="@+id/item2"
android:titleCondensed="Persist"
android:title="Persist"
android:icon="@android:drawable/ic_menu_preferences"
android:checkable="true" />
</menu>
Моя проблема в том, что второй пункт меню не кажутся "проверяемыми", когда я запускаю свое приложение в эмуляторе Android. Рядом с предметом должна быть зеленая галочка, верно? Чтобы указать, что его можно проверить.
Я что-то не так делаю?
Ответ, потому что ответы здесь кажутся длинными и замысловатыми.. Я имею некоторый точный код Kotlin здесь
Переопределение Ваше действие наверху и переопределяю функцию onMenuItemClick, Имею функцию для обработки нажатия кнопки для открытия меню.
Имеют массив или список, который содержит проверенное значение и устанавливает проверку, когда меню воссоздается
Примечание: Этот код не сохраняет меню открытым, Это только гарантирует, чтобы проверенные объекты остались проверенными. Я отметил, что существует много решений этого на переполнении стека, поэтому взгляните на них, если это - то, чего Вы требуете
class exampleActivity : AppCompatActivity(), PopupMenu.OnMenuItemClickListener {
private var checkChecked = arrayListOf(false,false)
//some code
fun clickBTN(v: View){
val popup = PopupMenu(this,v)
popup.setOnMenuItemClickListener(this)
popup.inflate(R.menu.yourmenufilename)
//assuming you have 2 or more menu items
popup.menu[0].isChecked = checkChecked[0]
popup.menu[1].isChecked = checkChecked[1]
popup.show()
}
override fun onMenuItemClick(item: MenuItem?): Boolean {
when(item?.itemID){
R.id.item0 -> {
item.isChecked = !item.isChecked
checkChecked[0] = item.isChecked
return true
}
R.id.item1 -> {
item.isChecked = !item.isChecked
checkChecked[1] = item.isChecked
return true
}
}
}
, конечно, в XML, у Вас должна быть своя установка Кнопки и Меню. Меню в качестве примера здесь
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item0"
android:title="@string/hi"
android:checkable="true"/>
<item android:id="@+id/item1"
android:title="@string/yo"
android:checkable="true"/>
</menu>