2014-04-14 64 views
0

我目前正在研究官方教程之後的第一個Android應用程序。 現在我試着去操作按鈕添加到我的Android中的操作按鈕不可見

MainActivity:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_activity_actions, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

RES /菜單/ main_activity_actions.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <!-- Search, should appear as action button --> 
    <item android:id="@+id/action_search" 
      android:icon="@drawable/ic_action_search" 
      android:title="@string/action_search" 
      android:showAsAction="ifRoom" /> 
    <!-- Settings, should always be in the overflow --> 
    <item android:id="@+id/action_settings" 
      android:title="@string/action_settings" 
      android:showAsAction="never" /> 
</menu> 

在應用程序運行沒有任何錯誤,但不顯示搜索按鈕。 ic_action_search圖標已正確放置到res/drawable-*中,並且action_search/action_settingsstrings.xml中定義。

我錯過了什麼嗎?

編輯: AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.myfirstapp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="19" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.myfirstapp.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="com.example.myfirstapp.DisplayMessageActivity" 
      android:label="@string/title_activity_display_message" 
      android:parentActivityName="com.example.myfirstapp.MainActivity" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.myfirstapp.MainActivity" /> 
     </activity> 
    </application> 

</manifest> 

styles.xml

<resources> 

    <!-- 
     Base application theme, dependent on API level. This theme is replaced 
     by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 
    --> 
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> 
     <!-- 
      Theme customizations available in newer API levels can go in 
      res/values-vXX/styles.xml, while customizations related to 
      backward-compatibility can go here. 
     --> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 
     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 

</resources> 
+0

你可以在清單中添加活動聲明:應用主題 –

+0

我已經添加了'AndroidManifest.xml'代碼。 – Chris

+0

設置你的'parent =「android:Theme.Holo.Light.DarkActionBar」'並嘗試 –

回答

2

由於每document

如果您的應用使用支持庫的兼容性版本低至Android 2.1,showAsAction屬性不可用於android:命名空間。相反,該屬性由支持庫提供,您必須定義自己的XML名稱空間並將該名稱空間用作屬性前綴。 (自定義XML命名空間,應根據你的應用程序的名字,但它可以是你想,是在聲明它的文件範圍內唯一可訪問的任何名稱。)例如:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:yourapp="http://schemas.android.com/apk/res-auto" > 
    <item android:id="@+id/action_search" 
      android:icon="@drawable/ic_action_search" 
      android:title="@string/action_search" 
      yourapp:showAsAction="ifRoom" /> 
    ... 
</menu> 

你是缺少main_activity_actions.xml中的自定義名稱空間。刪除yourapp與應用程序的名稱或任何東西。

+0

+1好的發現。做得好。 –