【发布时间】:2016-12-20 23:34:54
【问题描述】:
我只是一个初学者,所以我正在尝试制作一个专门用于了解menu.xml 和ActionBar 的Android 应用程序。所以我尝试添加MenuItems,这是我的menu.xml 代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:PizzaApp="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">
<item android:id="@+id/action_order_pizza"
android:icon="@drawable/order_pizza"
android:title="@string/order_pizza"
android:orderInCategory="1"
PizzaApp:showAsAction="ifRoom"/>
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="2"
PizzaApp:showAsAction="never"/>
</menu>
因为我希望我的应用使用Material design,我实际上并没有extend AppCompatActivity,但我使用了support.v7.app 依赖,只是为了使应用兼容。现在由于support.v7.app 库不包含showAsAction 函数,我在menu.xml 中使用了我的AppName 而不是android。但问题是除了action_setting 项目之外,action_order_pizza 也出现在 overflow 而不是 ActionBar 中。请帮忙!这是MainActivity 代码:
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return super.onCreateOptionsMenu(menu);
}
提前致谢!
注意:如果我使用
android而不是PizzaApp,Android Studio 会显示错误,但当您运行应用程序时,它仍然可以正常工作!
【问题讨论】:
-
您的声明“因为我希望我的应用程序使用 Material Design,所以我实际上并没有扩展 AppCompatActivity”是没有意义的。
AppCompatActivity特别确实为您提供所有 API 级别的材料设计。 -
@ianhanniballake - 那么这个错误是什么意思
FATAL EXCEPTION: main Process: com.platform.pizzashop, PID: 2475 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.platform.pizzashop/com.platform.pizzashop.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. -
"您需要在此活动中使用 Theme.AppCompat 主题(或后代)"
-
@ianhanniballake - 是的,按照我的说法,我的意思是我想使用
Theme.Material而不是Theme.AppCompat。而且,我现在也没有太多的知识,所以我的完整代码来自Head First Android Development -
Theme.AppCompatextendsTheme.Material在可用的情况下。如果你想使用 AppCompat 的任何部分,没有理由直接使用Theme.Material。
标签: android android-layout android-actionbar menuitem android-menu