无法从类方法设置活动的变量

时间:2017-12-04 16:20:06

标签: java android json variables android-asynctask

注意:由于我是第一次使用面向对象编程和android工作室,所以我的术语表现不佳。

在android studio中,我为JSON提取任务创建了一个类。 (我不会在背景覆盖中包含do。)

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

我希望在另一个&#34; asyncTask2&#34;中使用该变量。使用URL上的valuableInfo继续提取。

当我运行第二个&#34; asyncTask2&#34;时,变量总是为空。

1 个答案:

答案 0 :(得分:3)

AsyncTask异步执行操作。这意味着您不会立即得到结果,您必须等到它完成才能使用valueableInfo。您可以覆盖一种方法,称为onPostExecute。这将在您的任务完成后以及信息可用时触发。在这里执行你的第二个任务,那时它不会为空。

或许也可以合并这两个任务?