【问题标题】:Intent onPostExecute() AsyncTask意图 onPostExecute() AsyncTask
【发布时间】:2014-06-03 10:17:28
【问题描述】:

我在内部类中运行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();
}

【问题讨论】:

标签: java android android-intent android-asynctask


【解决方案1】:

你需要使用 Activity 类的上下文来完成方法,如下所示:

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()

【讨论】:

  • activity.finish();工作正常,但 setResult 仍然给我一个错误:“方法 setResult(int, Intent) 未定义 AsyncTask 类型”
  • @Dbucha01 也属于 Activity 类。需要上下文。
  • @Dbucha01 你也需要 setResult 的上下文
  • 我用 activity.setResult(Activity.RESULT_OK, intent); Activity 是 asynctask 构造函数中使用的 Activity
【解决方案2】:

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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-23
    • 2018-03-30
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多