Java Can';t设置活动';来自类方法的s变量
注意:我在术语方面做得不好,因为这是我第一次使用面向对象编程和android studio 在android studio中,我为JSON获取任务创建了一个类。 (我不包括后台覆盖中的do) 我想在另一个“asyncTask2”中使用该变量,它使用URL上的valuableInfo继续抓取Java Can';t设置活动';来自类方法的s变量,java,android,json,variables,android-asynctask,Java,Android,Json,Variables,Android Asynctask,注意:我在术语方面做得不好,因为这是我第一次使用面向对象编程和android studio 在android studio中,我为JSON获取任务创建了一个类。 (我不包括后台覆盖中的do) 我想在另一个“asyncTask2”中使用该变量,它使用URL上的valuableInfo继续抓取 当我运行第二个“asyncTask2”时,变量始终为空。AsyncTask异步执行操作。这意味着您无法立即获得结果,必须等到结果完成后才能使用valueableInfo。有一种方法可以重写,叫做onPostE
当我运行第二个“asyncTask2”时,变量始终为空。AsyncTask异步执行操作。这意味着您无法立即获得结果,必须等到结果完成后才能使用
valueableInfo
。有一种方法可以重写,叫做onPostExecute
。这将在任务完成后以及信息可用时触发。在这里执行第二个任务,此时它不会为空
您也可以合并这两个任务,也许 异步任务以异步方式执行操作。这意味着您无法立即获得结果,必须等到结果完成后才能使用
valueableInfo
。有一种方法可以重写,叫做onPostExecute
。这将在任务完成后以及信息可用时触发。在这里执行第二个任务,此时它不会为空
您也可以合并这两个任务,也许 很抱歉,我在代码中添加了onPostExecute方法重写。它都是在onPostExecute上执行的。(编辑主要帖子)我认为这与变量声明有关。我不是很确定。第二个AsyncTask仍然没有等待processFinishe回调。。将asyncTask2.execute()放在上面代码中processFinish()的最后一行,您将创建两个JSontask。尝试像new jsonTask(jsonTask.Response{})这样的方法,不要使用'new'关键字两次。很抱歉,我在代码上添加了onPostExecute方法重写。它都是在onPostExecute上执行的。(编辑主要帖子)我认为这与变量声明有关。我不是很确定。第二个AsyncTask仍然没有等待processFinishe回调。。将asyncTask2.execute()放在上面代码中processFinish()的最后一行,您将创建两个JSontask。尝试像newjsontask(jsonTask.Response{})这样的方法,不要使用“new”关键字两次。
public class jsonTasks extends AsyncTask<String, String, String> {
public interface AsyncResponse {
void processFinish(String output);
}
private AsyncResponse delegate = null;
jsonTasks(AsyncResponse delegate){
this.delegate = delegate;
}
@Override
protected void onPostExecute(String result) {
delegate.processFinish(result);
}
public class activity extends Activity {
// in here I've declared the string variable
String valuableInfo;
// FIRST TASK
jsonTasks asyncTask = new jsonTasks(new jsonTasks.AsyncResponse() {
@Override
public void processFinish(String output) {
String TAG = activity.class.getSimpleName();
JSONObject info;
//i do stuff with the json here
//i set the textboxes normally
txtSumName.setText(sumInfo.getString("name"));
//but setting the string valuableInfo is not working
valuableInfo = "info I took from json operation"
});
// and here I execute
asyncTask.execute("url");
// SECOND TASK
jsonTasks asyncTask2 = new .... {
.................
}
asyncTask2.execute("https://example.com/" + valuableInfo);
}