java - Android 中的菜单膨胀错误

标签 java android menu

你好,我学习在 Android 中使用菜单。我设置最小 SDK = 8 和最大 SDK = 17。 我希望当应用程序在最小 SDK 中运行时菜单显示在底部。并在最新的 SDK 中在应用程序栏顶部显示菜单。

但这是错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.androidmenu/com.example.androidmenu.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class menu

这是我的menu.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item 
        android:id="@+id/menu_settings"
        android:icon="@drawable/icon_settings"
        android:title="Settings"/>

    <item
        android:id="@+id/menu_save"
        android:icon="@drawable/icon_save"
        android:title="Save"/>

    <item
        android:id="@+id/menu_search"
        android:icon="@drawable/icon_search"
        android:title="Search"/>

    <item
        android:id="@+id/menu_delete"
        android:icon="@drawable/icon_delete"
        android:text="Delete"/>

</menu>

这是我的MainActivity.java 文件

package com.example.androidmenu;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {

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


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        //getMenuInflater().inflate(R.menu.main, menu);
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.layout.menu, menu);
        return true;
    }

    // Event Handling for individual menu
    public boolean onOptionsItemSelected(MenuItem menuItem) {
        switch(menuItem.getItemId()) {
            case R.id.menu_settings:
                Toast.makeText(MainActivity.this, "Settings selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.menu_save:
                Toast.makeText(MainActivity.this, "Save selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.menu_search:
                Toast.makeText(MainActivity.this, "Search selected:", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.menu_delete:
                Toast.makeText(MainActivity.this, "Delete selected", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(menuItem);
        }
    }
}

有什么解决办法吗?谢谢:)

最佳答案

改变这个

menuInflater.inflate(R.layout.menu, menu);

menuInflater.inflate(R.menu.menu, menu); // assuming menu.xml in /res/menu/menu.xml

您是否还有类似 menu.xml 的布局(如果有),请将其重命名以避免与 activity_main.xml 混淆

setContentView(R.layout.activity_main); // res/layout/activity_main.xml

您可以查看文档。有代码 fragment

http://developer.android.com/guide/topics/ui/menus.html

关于java - Android 中的菜单膨胀错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19733578/

相关文章:

jQuery - CSS 事件

html - 填充在我的 <ul> 上创建了奇怪的黑线

java - 两个身份列

android - 在 Android Phonegap App 中填写时防止滚动到输入

java - ListView 中数组适配器的空指针异常。安卓

c# - 为什么 MenuItem 标题前面有下划线?

java - ByteArrayOutputStream 长度 < 宽度 * 高度

Java--找不到符号错误

java - SpringMVC与静态资源

android - 仅使用 xml 如何确保 admob 广告始终出现在屏幕底部?