2014-02-26 30 views
12

我試圖添加一些操作項目到我的支持操作欄。在我的活動中,我還將標籤添加到操作欄中。在ActionBar中不顯示的操作項目showAsAction =「ifRoom」

這是活動的摘錄:

public class ShowEmails extends ActionBarActivity implements ShowEmailsFragmentInteractionListener { 

    private IMAPClientService service; 
    private boolean bound; 

    private ActionBar ab; 

    private MailDBHelper mdbhelper; 
    private SQLiteDatabase db; 

    private Intent client_service; 

    <.........................> 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     this.client_service = new Intent(this, IMAPClientService.class); 

     this.mdbhelper = new MailDBHelper(this.getApplicationContext(), MailDBHelper.MAIL_DB_NAME, null, MailDBHelper.MAIL_DB_VERSION); 
     this.db = this.mdbhelper.openWriteable(); 

     this.ab = this.getSupportActionBar(); 
     this.ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     this.ab.show(); 

     Tab t = ab.newTab().setText(R.string.all_emails) 
       .setTabListener(new TabListener<ShowEmailsFragment>(this, "all", ShowEmailsFragment.class)); 

     ab.addTab(t); 

     new LoadTabsInBackground().execute(); 
    } 



    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.show_emails_bulk_action, menu); 

     return super.onCreateOptionsMenu(menu); 
    } 
} 

LoadTabsInBackground做一些數據庫操作後,增加了一些標籤的動作條。

這是菜單資源,我不斷膨脹:

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

    <item 
     android:id="@+id/email_refresh" 
     android:orderInCategory="1" 
     android:showAsAction="ifRoom" 
     android:title="@string/action_refresh" 
     android:icon="@drawable/ic_menu_refresh"/> 

    <item 
     android:id="@+id/email_bulk_seen" 
     android:orderInCategory="20" 
     android:showAsAction="ifRoom" 
     android:title="@string/action_seen" 
     android:icon="@android:drawable/sym_action_email"/> 

    <item 
     android:id="@+id/email_bulk_delete" 
     android:orderInCategory="40" 
     android:showAsAction="ifRoom" 
     android:title="@string/action_delete" 
     android:icon="@android:drawable/ic_menu_delete"/> 

</menu> 

這裏是AndroidManifest.xml中,摘錄在這裏你可以SSE我使用的主題是Theme.AppCompat.Light

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

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

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/Theme.AppCompat.Light" > 

     <.......................> 


     <activity 
      android:name="it.dndonline.battleclient4android.Activities.ShowEmails" 
      android:label="@string/title_activity_show_folders" 
      android:theme="@style/Theme.AppCompat.Light" > 
     </activity> 

     <......................................> 

    </application> 

</manifest> 

不幸的是,儘管標籤加載正確,但一切似乎都正確,這意味着ActionBar正常工作,沒有任何菜單項加載到操作欄中。將showAsAction值設置爲always不會更改任何內容。

我在Android 2.3.3上測試它。

+0

的[不與程序兼容性顯示動作條(可能重複的http://計算器。 com/questions/18510337/actionbar-not-shown-with-appcompat) – flx

回答

36

我發現了這個問題。菜單.xml文件中出現錯誤。事實上,我添加了一個新的命名空間:

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

不過,我仍然好像它屬於android命名空間參考屬性:

android:showAsAction="ifRoom"

的正確方法是指這個屬性是使用:

app:showAsAction="ifRoom"

導致它屬於命名空間app

這裏是文檔的相關部分:

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

+0

謝謝!!!!!! –

0

我發現同樣的錯誤,我解決它像這樣

<item 
    android:id="@+id/action_refresh" 
    android:orderInCategory="100" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    app:showAsAction="ifRoom" 
    android:icon="@android:drawable/ic_delete" 
    android:title="Delete"/> 

代碼的中間增加,xmlns:app="http://schemas.android.com/apk/res-auto",工作對我來說:)

相關問題