Activity-在Activity中使用Menu

1、res -> New -> Directory,输入名字menu创建文件夹,右键menu -> New -> Menu resource file,创建main资源文件。

2、在main中添加代码,<item>标签涌来创建具体的某一个菜单项,然后通过android:id给菜单项指定唯一的标识符,通过android:title给菜单项指定一个名称。

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/add_item" android:title="Add"></item>

    <item android:id="@+id/remove_item" android:title="Remove"></item>

</menu>

3、在FirstActivity中重写onCreateOptionsMenu()方法,重写方法可以使用Ctrl + o快捷键(Mac系统是control + o)

override fun onCreateOptionsMenu(menu: Menu?): Boolean {

    menuInflater.inflate(R.menu.main,menu)

    return true

}

4、Java中的JavaBean概念,会根据类中的字段自动生成相应的Getter和Setter方法

public class Book{

    private int pages;

    public int getPages(){

        return pages;

    }

    public void setPages(int pages){

        this.pages = pages;

    }

}

val book = Book()

book.pages = 500

val bookPages = book.pages

//这里看上去好像并没有调用Book类的setPages()和getPages()方法,而是直接对pages字段进行了赋值和读取;Kotlin自动将上述代码转换成了调用setPages()方法和getPages()方法

5、根据上述语法糖,onCreateOptionsMenu中menuInflater实际上是调用了父类的getMenuInflater()方法,getMenuInflater()方法能够得到一个menuInflater对象,再调用它的inflated()方法,就可以给当前的Activity创建菜单了。

5.1、inflate()方法接收两个参数,第一个参数用于指定通过哪个资源文件来创建菜单;第二个参数用于指定菜单项将添加到哪个Menu对象中,这里直接使onCreateOptionsMenu()方法中的menu参数

5.2、返回true表示允许创建的菜单显示出来,如果返回了false,创建的菜单将无法显示

6、要使定义的菜单可用,需要再定义菜单响应事件,在FirstActivity中重写onOptionsItemSelected()方法

override fun onOptionsItemSelected(item: MenuItem): Boolean {

when (item.itemId){//通过item.itemId来判断点击的是哪一个菜单项,Kotlin实际上在背后调用的是item的getItemId()方法

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

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容