2013-03-04 3 views
6

Chcę włączyć Android ActionBar, ale to nie działa dla mnie.Android ActionBar NullPointerException

Oto moja główną działalność:

public void onCreate(Bundle savedInstanceState) { 

     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 


     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login); 

     ActionBar actionBar = getActionBar(); 
     actionBar.show(); 
     //more code............ 

i tutaj jest logcat:

03-04 16:31:09.423: E/AndroidRuntime(1441): FATAL EXCEPTION: main 
03-04 16:31:09.423: E/AndroidRuntime(1441): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.salebook/com.example.salebook.MainActivity}: java.lang.NullPointerException 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.os.Looper.loop(Looper.java:137) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at dalvik.system.NativeStart.main(Native Method) 
03-04 16:31:09.423: E/AndroidRuntime(1441): Caused by: java.lang.NullPointerException 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at com.example.salebook.MainActivity.onCreate(MainActivity.java:130) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.app.Activity.performCreate(Activity.java:5104) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
03-04 16:31:09.423: E/AndroidRuntime(1441):  ... 11 more 

Gdzie linia 130 jest anctionBar.show() i mam w RES/menu/menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/itemid_0" 
     android:title="Action Item 0" 
     android:icon="@drawable/ic_launcher" 
     android:orderInCategory="0" 
     android:showAsAction="ifRoom|withText" /> 
    <item android:id="@+id/itemid_1" 
     android:title="Action Item 1" 
     android:orderInCategory="0" /> 
    <item android:id="@+id/itemid_2" 
     android:title="Action Item 2" 
     android:orderInCategory="0" /> 
    <item android:id="@+id/itemid_3" 
     android:title="Action Item 3" 
     android:orderInCategory="0" /> 
</menu> 

Nie znalazłem problemu. Mam nadzieję, że ktoś mi pomoże.

Dzięki.

Również w stylu appThem:

<style name="AppTheme" parent="AppBaseTheme"> 
     <item name="android:windowActionBar">true</item> 
     <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    </style> 
+0

Co to jest numer wiersza 130 w MainActivity.java? – Pragnani

+0

@Pragnani 'actionBar.show()' – ninetwozero

+0

to actionbar null? – Pragnani

Odpowiedz

7

Ty Actionbar zwraca null, ponieważ nie masz actionbar ale żądasz za pomocą getActionbar()

Upewnij się, że masz funkcję okna, aby pokazać swoją actionbar, który jest wymagany dla actionbar pokazać. Sprawdź poniższe linki, aby uzyskać więcej informacji. ... sprawdzić to pytanie getActionBar returns null a także sprawdzić ten link na więcej informacji na temat problemu http://blog.perpetumdesign.com/2011/08/strange-case-of-dr-action-and-mr-bar.html

1

Czy rzeczywiście zobaczyć actionbar jeśli usunąć wiersz actionBar.show()? Jeśli nie, może to być związane z Twoim motywem, np. Theme.Light.NoActionBar.

+0

nadal ten sam wyjątek NullPointerException Chociaż usunąłem tę linię –

+0

Czy masz niestandardowy motyw dla swojej aplikacji/działalności? – nhaarman

+0

w pliku manifest.xml, mam następujący wiersz: android: theme = "@ style/AppTheme" –

6

Ty Usuń

android:theme="@style/AppTheme" 

w "Aplikacja" z AndroidManifest.xml

0

przejść do AndroidManifest .xml i zastąpić

android:theme="@style/AppTheme" 

przez

android:theme="@android:style/Theme.Holo.Light.DarkActionBar"