Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t设置活动';来自类方法的s变量_Java_Android_Json_Variables_Android Asynctask - Fatal编程技术网

Java Can';t设置活动';来自类方法的s变量

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

注意:我在术语方面做得不好,因为这是我第一次使用面向对象编程和android studio

在android studio中,我为JSON获取任务创建了一个类。 (我不包括后台覆盖中的do)

我想在另一个“asyncTask2”中使用该变量,它使用URL上的valuableInfo继续抓取


当我运行第二个“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);
}