Andorid在Activity中使用Menu

以下内容摘自郭霖《第一行代码》第三版

Menu

menu会在右上角以三个点的形式呈现。首先在res目录下新建一个menu文件夹,右击res目录→New→Directory,输入文件夹名“menu”,点击“OK”。接着在这个文件夹下新建一个名叫“main”的菜单文件,右击menu文件夹→New→Menu resource file。

main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/add_item"
        android:title="Add"/>
    <item
		android:id="@+id/remove_item"
 		android:title="Remove"/>
menu>

这里我们创建了两个菜单项,其中标签用来创建具体的某一个菜单项,然后通过android:id给这个菜单项指定一个唯一的标识符,通过android:title给这个菜单项指定一个名称。然后在onCreateOptionsMenu()方法中编写如下代码:

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.main, menu)
    return true
}

inflate()方法接收两个参数:

  • 第一个参数用于指定我们通过哪一个资源文件来创建菜单,这里当然是传入R.menu.main;
  • 第二个参数用于指定我们的菜单项将添加到哪一个Menu对象当中,这里直接使用onCreateOptionsMenu()方法中传入的menu参数。

最后给这个方法返回true,表示允许创建的菜单显示出来,如果返回了false,创建的菜单将无法显示。

仅仅是显示肯定是不够的,还需要绑定事件:

FirstActivity.kt

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {
        R.id.add_item -> Toast.makeText(this, "You clicked Add",Toast.LENGTH_SHORT).show()
        R.id.remove_item -> Toast.makeText(this, "You clicked Remove",Toast.LENGTH_SHORT).show()
    }
    return true
}

通过调用item.itemId来判断点击的是哪一个菜单项。接下来我们将item.itemId的结果传入when语句当中,然后给每个菜单项加入自己的逻辑处理。

菜单里的菜单项默认是不显示的,只有点击菜单按钮才会弹出里面具体的内容,因此它不会占用任何Activity的空间。

如果你不想通过按键的方式销毁Activity,而是希望在程序中通过代码来销毁Activity,那么可以调用finish()方法,相当于退出软件。

button1.setOnClickListener {
	finish()
}

你可能感兴趣的:(Android,android)