【问题标题】:Add a back button Activity添加后退按钮 Activity
【发布时间】:2016-06-13 21:26:39
【问题描述】:

我正在使用 android 2.1 并希望向 MapsAvtivity 添加一个后退按钮。我已经尝试了此页面上的内容 [Display back button on action bar,但应用程序崩溃了。我已按照另一个论坛的建议将 extends FragmentActivity 替换为 AppCompatActivity ,但应用程序仍然崩溃。我知道它与操作栏有关,因为如果我删除它,应用程序就会工作。看来操作栏为空。我被卡住了,已经启动了几次应用程序。这是错误:

 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

【问题讨论】:

  • 你能把代码贴在你的 onCreate 方法中吗?
  • 使用什么主题?有ActionBar吗?
  • 请张贴MapsActivity.onCreate(),Manifest 文件和styles.xml。

标签: android


【解决方案1】:

一些事情。确保您的活动扩展了 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);
}

【讨论】:

  • 没问题!如果有机会,您介意接受答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多