Andorid:选项菜单未显示

问题描述 投票:0回答:1

我是Android编程新手,想尝试在Android应用程序中实现选项菜单,所以我首先创建一个测试应用程序并尝试在那里创建一个选项菜单,我编写了代码,一切看起来都很好,没有错误并执行在 AVD 中,但是当应用程序打开时,找不到选项菜单。

我看了几个教程,针对同一问题经历了很多 stackoverflow 线程,实现了这些更改仍然没有运气 - 仍然没有选项菜单。

MainActivity.java 文件是:

package com.example.test;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.options_menu, menu);
        return true;
    }
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/options_menu_example"
        android:textSize="24sp"
        android:layout_centerInParent="true" />

</RelativeLayout>

选项菜单.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/menu_option_1"
        android:title="Option 1"
       />
    <item
        android:id="@+id/menu_option_2"
        android:title="Option 2"/>
</menu>

执行上述代码后的应用程序屏幕截图(使用带有 API 34 的 PIXEL 3 AVD):

(https://i.stack.imgur.com/9ZFAi.png)

我将非常感谢任何帮助解决这个问题并找出代码有问题的人,这样我就可以注意到这一点,而不会再犯同样的错误。谢谢你

我检查了所有文件是否位于正确的位置,例如 options_menu.xml 文件是否位于 res 的菜单目录中,是否有任何拼写错误和大量可能导致问题的小事情,但一切看起来都很好仍然看不到应用程序中的选项菜单。

android android-menu
1个回答
0
投票

要真正显示菜单,您的活动中需要有一个工具栏

这可能有两个原因

  1. 你的Activity主题没有标题栏,因为它可能有这种时尚的主题
<style name="AppTheme" parent="Theme.AppCompat.Light.**NoActionBar**">

因此您可以使用已有工具栏的活动主题

  1. 您的布局中没有工具栏,这从您的代码片段中非常清楚

您可以设置默认内置工具栏的主题,或者在活动的 XML 布局中显式添加工具栏

工具栏 xml 可能是这样的

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
</androidx.appcompat.widget.Toolbar>

然后您可以将其添加到您的活动中

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

参考this答案以获得一些详细的想法

© www.soinside.com 2019 - 2024. All rights reserved.