0
注:私はオブジェクト指向プログラミングとアンドロイドスタジオで初めてのことですので、用語ではうまくやっていません。アクティビティの変数をクラスメソッドから設定できません
アンドロイドスタジオでは、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);
}
私はその変数を使用したい使用してURLにvaluableInfoフェッチ継続することを別の「asyncTask2」です。
2番目の "asyncTask2"を実行すると、変数は常にnullです。
申し訳ありませんコード上でonPostExecuteメソッドオーバーライドを追加しました。 これはすべてonPostExecuteで実行されます。 (メインポストを編集しました) 変数宣言と関係があると思います。私は本当にわからない。 – quelotic
2番目のAsyncTaskはprocessFinisheコールバックをまだ待っていません。processFinish()内の最後の行にasyncTask2.execute()を入れてください。 – Vlad
上記のコードから、2つのjsonTaskを作成しています。新しいjsonTask(JsonTask.Response {})のようなものを試してみて、 'new'キーワードを2回使用しないでください。 –