美文网首页
Activity-在Activity中使用Menu

Activity-在Activity中使用Menu

作者: 陈饥饿 | 来源:发表于2022-04-06 10:45 被阅读0次

    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

    }

    相关文章

      网友评论

          本文标题:Activity-在Activity中使用Menu

          本文链接:https://www.haomeiwen.com/subject/ugtqdrtx.html