0

在我的应用程序中,我面临的问题在Android 4.0 .THIS问题不面向Android 2.3以下是导致问题的步骤 - 1.我有一个主要活动TaskManagerActivity(activity 1) 2.然后我移动到另一个活动ReminderModificationActivity(活动2) 3.进行一些数据库更改并返回活动1 4.然后按退出按钮退出应用程序。无法恢复活动 - Android 4.0的非法状态异常

11-06 13:25:37.075: E/AndroidRuntime(6591): FATAL EXCEPTION: main 
11-06 13:25:37.075: E/AndroidRuntime(6591): java.lang.RuntimeException: Unable to resume activity {ray.kaushik.simple.task.manager/ray.kaushik.simple.task.manager.ReminderModificationActivity}: java.lang.IllegalStateException: trying to requery an already closed cursor [email protected] 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2575) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2603) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at android.os.Looper.loop(Looper.java:137) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at java.lang.reflect.Method.invoke(Method.java:511) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at dalvik.system.NativeStart.main(Native Method) 
11-06 13:25:37.075: E/AndroidRuntime(6591): Caused by: java.lang.IllegalStateException: trying to requery an already closed cursor [email protected] 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at android.app.Activity.performRestart(Activity.java:5051) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at android.app.Activity.performResume(Activity.java:5074) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2565) 
11-06 13:25:37.075: E/AndroidRuntime(6591):  ... 10 more 

我想我的应用程序试图加载活动2,我不想 - 当我试图再次打开该应用程序,我得到以下错误。

对BAC按下按钮代码练习1 -

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      if(isBackPressed){ 
       moveTaskToBack(true); 
       mDBHelper.close(); 
       finish(); 
      }else{ 
       Toast.makeText(getApplicationContext(), "Please press back again to exit application", Toast.LENGTH_SHORT).show(); 
       isBackPressed = true; 
      } 

      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

可以sumone plz帮助我..?请精心为我的新的Android development.Thanks

+0

为什么你需要movetasktoback? – marcinj

+0

我认为这是一个冗余代码..我无论如何完成它。 – RayKaushik

回答

0

请确保您再次收集数据库光标的onResume方法的活动1.

+0

我没有任何onresume方法的活动1.你可以请详细说明一些code.i新到android如此倔强找出大多数d的东西..! :( – RayKaushik

+0

当然,这应该让你有一些想法:http://developer.android.com/training/basics/activity-lifecycle/pausing.html关于应用程序生命周期。当你离开应用程序时,DB游标被销毁(它应该是),然后当你恢复你的应用程序时,你应该再次填充它 – Kristopher

0

你在一些应用程序中的onResume失败的。您正在调用完成以响应后退按钮,该按钮将结束该活动并恢复前一个活动。然后崩溃,因为您在该活动的onResume中查询已关闭的游标。如果您不想回到其他活动,则应在启动此活动后致电完成。

+0

我添加了onresume的活动1并添加了日志消息,但没有一个onREsume fn被调用活动1或2。 – RayKaushik

2

我解决了这个问题。尽管活动1应该是本来应该召开的启动活动,但我的活动2仍在接受调用。

我添加的android:noHistory =真我的清单文件和宾果其工作..

感谢您的帮助家伙.. !!