Kotlin: Как сделать меню панели инструментов с помощью Anko DSL?

Как сделать меню панели инструментов Android с Anko DSL прямо в классе пользовательского интерфейса? Не хотите писать слушателей в классе Activity.

Что касается моего ответа, приведенного ниже, есть ли способ избежать XML-файла для описания элементов меню?

В файле AndroidManifest.xml выберите тему без ActionBar

Создайте файл ресурсов XML вашего меню, как обычно:

<menu ...> <item android:id="@+id/action1" android:title="Action1"/> <item android:id="@+id/action2" android:title="Action2"/> </menu> 

Для каждого элемента в меню создайте свою собственную активность

Создайте основной класс активности:

 class ActivityMain : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ActivityMainUI().setContentView(this) //do not use setActionBar() or setSupportActionBar() } // do not override onOptionsItemSelected() and onCreateOptionsMenu() here } class ActivityMainUi: AnkoComponent<ActivityMain> { override fun createView(ui: AnkoContext<ActivityMain>) = with(ui) { coordinatorLayout { // justify layout appBarLayout { toolbar { // justify your toolbar inflateMenu(R.menu.your_menu_xml_resource) onMenuItemClick { item -> when (item!!.itemId) { R.id.action_1 -> { startActivity<Activity1>() true } R.id.action_2 -> { startActivity<Activity2>() true } else -> false } } }.lparams(width = matchParent, height = wrapContent) }.lparams(width = matchParent, height = wrapContent) // put other views } } }