참고 : 객체 지향 프로그래밍 및 Android Studio에서 처음 사용하기 때문에 전문 용어로 잘하지 않습니다.클래스의 메소드에서 액티비티 변수를 설정할 수 없습니다.
android 스튜디오에서 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"입니다.
두 번째 "asyncTask2"를 실행할 때 변수는 항상 null입니다.
죄송합니다 코드에 onPostExecute 메서드 재정의를 추가했습니다. 모두 onPostExecute에서 실행됩니다. (메인 포스트 편집) 변수 선언과 관련이 있다고 생각합니다. 나는 정말로 모른다. – quelotic
두 번째 AsyncTask는 여전히 processFinishe 콜백을 기다리지 않고 있습니다. processFinish() 내의 마지막 줄에 asyncTask2.execute()를 넣으십시오. – Vlad
위 코드에서 두 개의 jsonTask가 생성됩니다. new jsonTask (JsonTask.Response {})와 같은 것을 시도하고 'new'키워드를 두 번 사용하지 마십시오. –