有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Intent onPostExecute()异步任务

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

错误出现在RESULT_OKsetResult()行和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();
}

共 (2) 个答案

  1. # 1 楼答案

    setResultfinish()是活动类的方法。同样,您也需要活动上下文

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

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

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

    然后

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

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

      ((Activity) mContext).setResult(Activity.RESULT_OK, intent);
      ((Activity) mContext).finish();
    
  2. # 2 楼答案

    对于finish方法,您需要使用活动类的上下文,如下所示:

    YourActivity.this.finish()
    

    活动类上存在结果_OK,因此您需要:

    Activity.RESULT_OK
    

    因此,您的代码必须如下所示:

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