Проверяемый пункт меню Android

В моем приложении для 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. Рядом с предметом должна быть зеленая галочка, верно? Чтобы указать, что его можно проверить.

Я что-то не так делаю?

59
задан Sergey Glotov 17 March 2015 в 14:29
поделиться

1 ответ

Ответ, потому что ответы здесь кажутся длинными и замысловатыми.. Я имею некоторый точный код 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>
1
ответ дан 24 November 2019 в 18:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: