Intent onPostExecute()AsyncTask

时间:2014-06-03 10:17:28

标签: java android android-intent android-asynctask

我在内部类中运行AsyncTask并且在onPostExecute()内完成后我想使用意图将值传递给另一个活动但是我有两个错误,我不确定如何修复。

错误发生在setResult()RESULT_OKfinish()行,说明这两项操作不能在活动之外发生。我如何在'AsyncTask'的onPostExecute中使用此意图?

代码:

protected void onPostExecute(Void result) 
{
    // TODO Auto-generated method stub
    super.onPostExecute(result);
    Intent intent = new Intent();
    intent.putExtra("jobs", jobStatus);
    intent.putExtra("requestsSent", requests);
    setResult(RESULT_OK, intent);
    finish();
}

2 个答案:

答案 0 :(得分:1)

你需要使用Context of Activity类,如下面的finish方法:

YourActivity.this.finish()
活动类上存在

和RESULT_OK,因此您需要:

Activity.RESULT_OK

因此您的代码必须如下:

Intent intent = new Intent();
intent.putExtra("jobs", jobStatus);
intent.putExtra("requestsSent", requests);
setResult( Activity.RESULT_OK, intent);
YourActivity.this.finish()

答案 1 :(得分:0)

setResultfinish()是Activity类的方法。您将需要相同的活动上下文

http://developer.android.com/reference/android/app/Activity.html

现在将Activity上下文传递给AsyncTask的构造函数

 new TheTask(ActivityName.this).execute(params);

然后

Context mContext;
public TheTask(Context context)
{
     mContext = context;
} 

如果AsyncTask是Activity的内部类,则可以使用ActivityName.this

  ((Activity) mContext).setResult(Activity.RESULT_OK, intent);
  ((Activity) mContext).finish();