Android完成活动错误

时间:2011-07-01 11:04:04

标签: android android-activity

所以我在完成一项活动并回到其父(右项?)活动时遇到问题。

它到达此线程ActivityThread.performResumeActivity(IBinder,boolean)行:2241 然后给我一个InvocationTargetException。(Throwable)行:50,出现以下错误

java.lang.RuntimeException:无法恢复活动{com.android.market.companionpushup / com.android.market.companionpushup.WorkoutActivity}:java.lang.IllegalStateException:database /data/data/com.android.market .companionpushup / databases / Exercise数据已经关闭

所以我想我很困惑,当我只是试图完成我的活动并回到原始活动时,如何处理我的数据库时出错(但从未在原始活动中点击onResume方法)。

调用以启动新活动的代码

 public void takeRest(int time, int addTime) {
    Intent i = new Intent(this, TimerActivity.class);
    i.putExtra("time", time);
    i.putExtra("addTime", addTime);
    startActivity(i);

} 

然后我的自定义计时器一直运行,直到我单击此按钮跳过计时器的其余部分。此时它永远不会回到原始活动(我在onCreate,onStart,onResume,onActivityResult上设置了断点),没有错误就达不到任何断点。

Button skip = (Button)findViewById(R.id.skip);
    skip.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            timer.cancel();
            setResult(RESULT_OK);
            finish();
        }

    });

来自原始Activity的其他代码,但是当我单步执行调试器

时从未到达
@Override
protected void onResume() {
    super.onResume();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    Toast.makeText(WorkoutActivity.this, "Yay", Toast.LENGTH_SHORT).show();
}

2 个答案:

答案 0 :(得分:1)

也许您必须使用startActivityForResult()方法开始活动?

答案 1 :(得分:1)

错误告诉您需要知道的内容:

java.lang.RuntimeException: Unable to resume activity {com.android.market.companionpushup/com.android.market.companionpushup.WorkoutActivity}: java.lang.IllegalStateException: database /data/data/com.android.market.companionpushup/databases/Exercise Data already closed

这说明com.android.market.companionpushup.WorkoutActivity类中使用的数据库连接已经关闭,但某些东西需要(可能会重新填充ListView)。您应该检查onPause中的onStopWorkoutActivity代码,以确保您没有错误地关闭数据库。您使用的是CursorLoader还是startManagingCursor