2013-07-29 17 views
25

Próbowałem zaimplementować pasek akcji w mojej aplikacji.Pasek czynności nie pokazuje

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> 

i stworzył menu

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

enter image description here

Ale to nie pokazuje pasek akcji, nawet jeśli minSdkVersion jest 11. Jaka jest tego przyczyna?

+0

Co motyw nie można ustawić dla swojej działalności w swoim AndroidManifest.xml? –

+0

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

+0

Czy używasz: 'public MenuInflater getMenuInflater() { return new MenuInflater (this); } '? Lub nazywać go jak 'getActivity(). GetMenuInflater(). Inflate (R.menu.menu, menu);'? – g00dy

Odpowiedz

73

Usuń motyw dla działania paska czynności w pliku androidManifest. Teraz to będzie działać ...

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

Nie dodawaj żadnego motywu w pliku manifestu aplikacji. Jeśli dodałeś jeden, usuń i spróbuj go uruchomić ...

+1

Ok. Dziękuję. Anulowanie tematu z manifestu poprawiło mój problem –

+0

z przyjemnością – Satheesh

+0

Świetne i proste rozwiązanie działające jak mistrz .. –

4

Musisz ustawić styl swojej aktywności na Theme.Holo lub jeden z jej wariantów, aby pokazać pasek akcji. Jeśli chcesz zachować wsteczną kompatybilność, zadzwoń setTheme w onCreate swojej działalności:

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

Ok. Dziękuję. Anulowanie motywu z manifestu poprawiło mój problem. –

3

aplikacja z oczywistego jak to

<?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 jak ten

<?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> 

I taka aktywność to:

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; 
    } 
} 

Wygląda jak to.

enter image description here

Czy jesteś pewien, czy telefon lub emulator działa Android 3.0 lub powyżej? Jeśli nie, otrzymasz zrzut ekranu.

aby umożliwić Actionbar na starszych urządzeniach, należy użyć AppCompat/obsługa biblioteki (https://developer.android.com/tools/support-library/features.html)

+0

Ok. Dziękuję. Zaniechanie tematu z manifestu poprawiło mój problem. –

+0

po usunięciu motywu pojawia się błąd 02-05 12: 02: 23.267: E/AndroidRuntime (8856): Spowodowany przez: java.lang.IllegalStateException: Musisz użyć motywu Theme.AppCompat (lub potomka) z tym działaniem. – Erum

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

to działa. Umieścić go w

0

importować import android.support.v7.app.AppCompatActivity;

następnie edytować do public class MainActivity extends AppCompatActivity

Dodaj do zależnościami

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

zmieniają aktywność do AppCompatActivity w swojej klasie. To powinno być najłatwiejsze, jeśli chcesz je szybko dodać.dodam kod dla kogoś, kto jest nowy Android OS:

public class YourActivity extends Activity 

w

public class YourActivity extends AppCompatActivity 
Powiązane problemy