我在内部类中运行AsyncTask
并且在onPostExecute()
内完成后我想使用意图将值传递给另一个活动但是我有两个错误,我不确定如何修复。
错误发生在setResult()
行RESULT_OK
和finish()
行,说明这两项操作不能在活动之外发生。我如何在'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();
}
答案 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)
setResult
和finish()
是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();