操作栏活动导致错误

时间:2014-12-24 00:12:07

标签: java android

嘿伙计们,当我在 android studio 中添加动作栏时,它只是说添加app战斗..... 当我添加它说要将android更改为app并且我改变了但是当我运行我的应用程序时,这里没有操作栏是我的xml和java代码。 XML

<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"

    >
    <item
        android:title="search"
        android:icon="@drawable/ic_action_search"
        android:id="@+id/search_icon"
        android:text="search1"
        android:showAsAction="always"
    />

的java

public boolean onCreateOptionsMenu(android.view.Menu menu) {
        MenuInflater i= getMenuInflater();
        i.inflate(R.menu.search_bar,menu);
        return super.onCreateOptionsMenu(menu);
    }

app已成功运行,但没有操作栏

当我删除该函数oncreateOptionMenu时它仍然没有显示任何操作栏但它显示在我的第一个活动实际上这是应用程序的菜单这里是代码

public class Menu extends Activity {

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

    //@Override
    /*public boolean onCreateOptionsMenu(android.view.Menu menu) {
        MenuInflater i= getMenuInflater();
        i.inflate(R.menu.search_bar,menu);
        return super.onCreateOptionsMenu(menu);
    }*/
}

这里是清单

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Base.Theme.AppCompat" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Menu"
            android:label="@string/app_name"
            android:theme="@style/Base.Theme.AppCompat.Light">
            <intent-filter>
                <action android:name=".Menu" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>

2 个答案:

答案 0 :(得分:0)

发布确切的消息以允许更具体的回复。

showAsAction应使用您的应用名称空间,即:

xmlns:app="http://schemas.android.com/apk/res-auto"
...
app:showAsAction="always"

您还应该确保在应用程序样式中使用AppCompat主题。

答案 1 :(得分:0)

appcompat主题删除原生ActionBar并使用支持ActionBar。

您需要更改

extends Activity

extends ActionBarActivity

您还需要在AndroidManifest中将Base.Theme.AppCompat.Light更改为Theme.AppCompat.Light

有关详细信息,请参阅此博文:http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html