如何取消使用startActivityForResult开始的活动

时间:2014-02-26 19:53:15

标签: android android-intent android-activity

我的活动Activity1Activity2

开始startActivityForResult(..)

Activity2我有一个调用AsyncTask的保存按钮,在onSuccess我将活动返回,一切正常。

但是,如果用户未单击save按钮而是单击后退按钮,则会出现如下错误:

android.util.SuperNotCalledException: Activity {com.myapp.mobile/com.myapp.mobile.ui.activity.Activity2} did not call through to super.onDestroy()
        at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3467)

以下是我的示例代码:

在Activity1中

Intent intent=new Intent(Activity.this,Activity2.class);  
startActivityForResult(intent, 2);

.....

@Override  
protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);  
    if(requestCode==2) {  
        //do some stuff here  
    }  
}  
活动2中的

@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
    if (menuItem.getItemId() == android.R.id.home) {
        finish();
        return true;
    }
    if (menuItem.getTitle().toString().equalsIgnoreCase("Save")) {
        new MyAsyncTask(this, intent, someData).execute();
    }
    return true;
}

问题

我该如何解决这个问题?如何让用户点击(home)而不是杀死我的应用?

1 个答案:

答案 0 :(得分:2)

您认为onDestroy()中已覆盖Activity2方法,但未在此处调用super.onDestroy()