2013-07-29 3 views
25

Я попытался реализовать панель действий в своем приложении.Панель действий не отображается

menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/itemAdd" 
     android:showAsAction="ifRoom|withText" 
     android:title="ADD"> 
    </item> 
    <item 
     android:id="@+id/itemRefresh" 
     android:showAsAction="ifRoom|withText" 
     android:title="REFRESH"> 
    </item> 
    <item 
     android:id="@+id/itemHelp" 
     android:title="HELP"> 
    </item> 

</menu> 

И создал меню

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     getMenuInflater().inflate(R.menu.menu, menu); 
     return true; 
    } 

enter image description here

Но он не показывает панель действий, даже если minSdkVersion является 11. В чем причина?

+0

Что тему вы установите для вашей деятельности в вашем AndroidManifest.xml? –

+0

android: theme = "@ android: style/Theme.Black.NoTitleBar" –

+0

Вы случайно не используете: 'public MenuInflater getMenuInflater() { return new MenuInflater (this); } '? Или называть его как 'getActivity(). GetMenuInflater(). Inflate (R.menu.menu, menu);'? – g00dy

ответ

73

Удалить свою тему для активности вашего действия в действии в файле androidManifest. Теперь он будет работать ...

<application 
    android:allowBackup="true" 
    android:icon="@drawable/tasktodo" 
    android:label="@string/app_name" 
    > 

Не добавлять любую тему в прикладном файле манифеста. Если вы добавили один из них, удалите его и попробуйте запустить его ...

+1

Ok. Спасибо. Исправлена ​​тема из манифеста. Исправлена ​​моя проблема. –

+0

с удовольствием. – Satheesh

+0

Отличное и простое решение, работающее как champ .. –

4

Вы должны установить стиль своей деятельности Theme.Holo или один из его вариантов для отображения ActionBar. Если вы хотите сохранить обратную совместимость, звоните setTheme в OnCreate вашей деятельности:

setTheme(android.R.style.Theme_Holo); 
+0

Хорошо. Спасибо. Исправлена ​​тема из манифеста, исправлена ​​моя проблема. –

3

приложения с манифестом, как этого

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example.Actionbartest" 
      android:versionCode="1" 
      android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11" /> 
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"> 
     <activity android:name="MyActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

menu.xml как этого

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
      android:id="@+id/itemAdd" 
      android:showAsAction="ifRoom|withText" 
      android:title="ADD"> 
    </item> 
    <item 
      android:id="@+id/itemRefresh" 
      android:showAsAction="ifRoom|withText" 
      android:title="REFRESH"> 
    </item> 
    <item 
      android:id="@+id/itemHelp" 
      android:title="HELP"> 
    </item> 
</menu> 

А Деятельность вроде этого

package com.example.Actionbartest; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 

public class MyActivity extends Activity { 
    /** 
    * Called when the activity is first created. 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     getMenuInflater().inflate(R.menu.menu, menu); 
     return true; 
    } 
} 

Похоже на это.

enter image description here

Вы уверены, что ваш телефон или эмулятор работает Android 3.0 или выше? Если нет, вы получите скриншот.

Чтобы включить ActionBar на старых устройствах, вы должны использовать/поддержки библиотеки AppCompat (https://developer.android.com/tools/support-library/features.html)

+0

Хорошо. Спасибо. Исправлена ​​тема из манифеста. –

+0

после удаления темы i m get error 02-05 12: 02: 23.267: E/AndroidRuntime (8856): Caused by: java.lang.IllegalStateException: вам нужно использовать тему Theme.AppCompat (или потомок) с этим действием. – Erum

2
android:allowBackup="true" 
    android:icon="@drawable/ic2" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Holo.Light.DarkActionBar" 

это работает. Положите его в

0

импортировать import android.support.v7.app.AppCompatActivity;

затем редактировать в public class MainActivity extends AppCompatActivity

Добавить в зависимости

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:25.0.0' 
} 
0

изменения активности в AppCompatActivity в своем классе. Это должно быть самым простым, если вы хотите добавить его быстро.Я добавлю код для кого-то, кто является новым для Android OS:

public class YourActivity extends Activity 

в

public class YourActivity extends AppCompatActivity 
Смежные вопросы