首页 > 解决方案 > 如何在 Kotlin 中打开菜单项选择的新页面?

问题描述

我的应用程序中有一个选项菜单,其中包含一个项目:

菜单定义在main.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_about"
        android:icon="@android:drawable/ic_menu_info_details"
        android:orderInCategory="100"
        android:title="@string/action_about"
        app:showAsAction="never" />
</menu>

菜单似乎是内置的MainActivity.kt

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.main, menu)
        return true
    }

我创建了一个简单的 Activity,当从定义的菜单中选择 About 项目时,我想显示它activity_about.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".About">

    <TextView
        android:id="@+id/aboutView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:linksClickable="false"
        android:text="@string/author"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

和一个相关的类About.kt

package com.example.rollme

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class About : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_about)
    }
}

单击“关于”菜单项时如何显示“关于”活动?

标签: androidkotlin

解决方案


您需要覆盖方法onOptionsItemSelected并处理单击您的项目。Java 示例:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if(id == R.id.action_about) {
       startActivity(New Intent(this, About.class))
       return true;
    }else {
        return super.onOptionsItemSelected(item);
    }
}

推荐阅读