onDestroy() 在操作栏上的后退按钮被按下时调用
onDestroy() called when backbutton on actionbar is pressed
我有两个活动,第一个包含一个 ListView of hotel list and the second one is a RecyclerView 用于显示详细信息。
当我使用我的硬件后退按钮按下它时我没有遇到问题 activity 正常恢复,ListView 仍然存在但是当我按下 ActionBar 和 onDestroy 上的后退按钮时我得到了 NullPointerException () 被调用。
如何防止在单击操作栏上的后退按钮时调用 onDestroy()?
编辑:
这是生命周期的 logcat :
1.搜索结果初始化()
11-21 14:36:45.872 3037-3037/com.agranirwa.travel E/ActivityState: onStart()事件中
11-21 14:36:45.882 3037-3037/com.agranirwa.travel E/ActivityState: onResume()事件中
</pre>
<p>
- 当 ListView 项被选中时
11-21 14:37:55.922 3037-3037/com.agranirwa.travel E/ActivityState: onPause()事件中
11-21 14:37:56.602 3037-3037/com.agranirwa.travel E/RecyclerView:未连接适配器;跳过布局
11-21 14:37:56.732 3037-3037/com.agranirwa.travel E/RecyclerView:未连接适配器;跳过布局
11-21 14:37:56.982 3037-3037/com.agranirwa.travel E/ActivityState:在onStop()事件中
</pre>
<p>
3.硬件反压时
11-21 14:38:14.562 3037-3037/com.agranirwa.travel E/ActivityState: onRestart()事件中
11-21 14:38:14.562 3037-3037/com.agranirwa.travel E/ActivityState:在onStart()事件中
11-21 14:38:14.562 3037-3037/com.agranirwa.travel E/ActivityState: onResume()事件中
</pre>
<p>
4. 当 actionbar 被按下时
11-21 14:40:15.052 3037-3037/com.agranirwa.travel E/ActivityState: Activity is Finished
11-21 14:40:15.052 3037-3037/com.agranirwa.travel E/ActivityState: In the onDestroy() event
11-21 14:40:15.112 3037-3037/com.agranirwa.travel E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.agranirwa.travel, PID: 3037
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.agranirwa.travel/com.agranirwa.travel.ui.SearchResultActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2200)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2249)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5113)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.agranirwa.travel.ui.SearchResultActivity.onCreate(SearchResultActivity.java:100)
at android.app.Activity.performCreate(Activity.java:5242)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2164)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2249)
at android.app.ActivityThread.access0(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5113)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
at dalvik.system.NativeStart.main(Native Method)
也许您在 ActionBar 中的后退按钮有问题,您应该真正添加您的实际代码或实施此解决方案
初始化ActionBar后添加
actionBar.setHomeButtonEnabled(true);
然后添加以下内容
@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(menuItem);
}
}
我有两个活动,第一个包含一个 ListView
当我使用我的硬件后退按钮按下它时我没有遇到问题 activity 正常恢复,ListView 仍然存在但是当我按下 ActionBar 和 onDestroy 上的后退按钮时我得到了 NullPointerException () 被调用。
如何防止在单击操作栏上的后退按钮时调用 onDestroy()?
编辑:
这是生命周期的 logcat :
1.搜索结果初始化()
11-21 14:36:45.872 3037-3037/com.agranirwa.travel E/ActivityState: onStart()事件中 11-21 14:36:45.882 3037-3037/com.agranirwa.travel E/ActivityState: onResume()事件中 </pre> <p>
- 当 ListView 项被选中时
11-21 14:37:55.922 3037-3037/com.agranirwa.travel E/ActivityState: onPause()事件中 11-21 14:37:56.602 3037-3037/com.agranirwa.travel E/RecyclerView:未连接适配器;跳过布局 11-21 14:37:56.732 3037-3037/com.agranirwa.travel E/RecyclerView:未连接适配器;跳过布局 11-21 14:37:56.982 3037-3037/com.agranirwa.travel E/ActivityState:在onStop()事件中 </pre> <p>
3.硬件反压时11-21 14:38:14.562 3037-3037/com.agranirwa.travel E/ActivityState: onRestart()事件中 11-21 14:38:14.562 3037-3037/com.agranirwa.travel E/ActivityState:在onStart()事件中 11-21 14:38:14.562 3037-3037/com.agranirwa.travel E/ActivityState: onResume()事件中 </pre> <p>
4. 当 actionbar 被按下时11-21 14:40:15.052 3037-3037/com.agranirwa.travel E/ActivityState: Activity is Finished 11-21 14:40:15.052 3037-3037/com.agranirwa.travel E/ActivityState: In the onDestroy() event 11-21 14:40:15.112 3037-3037/com.agranirwa.travel E/AndroidRuntime: FATAL EXCEPTION: main Process: com.agranirwa.travel, PID: 3037 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.agranirwa.travel/com.agranirwa.travel.ui.SearchResultActivity}: java.lang.NullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2200) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2249) at android.app.ActivityThread.access0(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5113) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NullPointerException at com.agranirwa.travel.ui.SearchResultActivity.onCreate(SearchResultActivity.java:100) at android.app.Activity.performCreate(Activity.java:5242) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2164) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2249) at android.app.ActivityThread.access0(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5113) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) at dalvik.system.NativeStart.main(Native Method)
也许您在 ActionBar 中的后退按钮有问题,您应该真正添加您的实际代码或实施此解决方案
初始化ActionBar后添加
actionBar.setHomeButtonEnabled(true);
然后添加以下内容
@Override
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(menuItem);
}
}