2016-06-13 7 views
0

Я использую android 2.1 и хочу добавить кнопку возврата в MapsAvtivity. Я пробовал, что на этой странице [Display back button on action bar, но приложение падает. Я заменил расширение FragmentActivity на AppCompatActivity, как было рекомендовано в другом форуме, но приложение все еще сбой. Я знаю, что это как-то связано с панелью действий, потому что, если я удалю его, приложение работает. Похоже, что панель действий имеет значение null. Я застрял и начал приложение несколько раз. Вот ошибка:Добавить кнопку назад Активность

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.pc.canda.theplacestosee/com.pc.canda.theplacestosee.MapsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference 
                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                         at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                         at android.os.Looper.loop(Looper.java:135) 
                         at android.app.ActivityThread.main(ActivityThread.java:5221) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at java.lang.reflect.Method.invoke(Method.java:372) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
                        Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayHomeAsUpEnabled(boolean)' on a null object reference 
                         at com.pc.canda.theplacestosee.MapsActivity.onCreate(MapsActivity.java:31) 
                         at android.app.Activity.performCreate(Activity.java:5937) 
                         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                         at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                         at android.os.Looper.loop(Looper.java:135) 
                         at android.app.ActivityThread.main(ActivityThread.java:5221) 
                         at java.lang.reflect.Method.invoke(Native Method) 
                         at java.lang.reflect.Method.invoke(Method.java:372) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694 
+0

Можете ли вы опубликовать код в методе onCreate? – Jay

+0

Какая тема используется? Имеет ли он ActionBar? – user35603

+1

Пожалуйста, напишите 'MapsActivity.onCreate()', файл манифеста и styles.xml. –

ответ

2

Несколько вещей. Убедитесь, что ваша активность расширяет AppCompatActivity, убедитесь, что стиль, который вы используете, имеет панель действий (вы устанавливаете это в манифесте).

android:theme="@style/AppTheme" 

Убедитесь, что вы используете бар правильное действие (ActionBar или SupportActionBar)

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

или

getActionBar().setDisplayHomeAsUpEnabled(true); 

Наконец, добавить onOptionsItemSelected метод так, чтобы ваша кнопка назад знает, что делать.

public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 
     case android.R.id.home: 
      finish(); 
      return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
+0

Цените свою помощь. Я не могу поблагодарить вас. – kyzen

+0

Без проблем! Не могли бы вы принять ответ, если у вас будет шанс? – Jay

Смежные вопросы