У меня возникла проблема с получением значения из AsyncTask, которое получает данные из JSON-соединения. Я просмотрел несколько примеров, но в основном я видел результаты публикации AsyncTask.AsyncTask Результат возврата
Сначала у меня есть объект Dog, который имеет только строку, имя. Я пытаюсь получить имя собаки с сервера. Используя следующий код в моем oncreate, я запускаю DogAsyncTask, когда вы просматриваете URL-адрес n и Dog d_in.
Dog d_in = new Dog("DogName");
DogAsyncTask task = new DogAsyncTask(d_in);
String n = "www.dog.com";
task.execute(n);
Log.e("Out", d_in.getName());
Мой AsyncTask выглядит следующим образом:
private class DogAsyncTask extends AsyncTask<String, Void, String> {
Dog d = null;
DogAsyncTask(Dog d){
this.d = d;
}
ProgressDialog mProgressDialog;
@Override
protected void onPostExecute(String result) {
d.setName(result);
Log.e("Dog", d.getName());
mProgressDialog.dismiss();
}
@Override
protected void onPreExecute() {
mProgressDialog = ProgressDialog.show(AsyncTestActivity.this, "Loading...", "Data is Loading...");
}
@Override
protected String doInBackground(String... name) {
//Go to url = name and then gets String below.
String outfromjson = "new dog name"; //This will be a function that gets a name from JSON
return outfromjson;
}
}
Я пытался использовать что-то вроде Log.e ("Out", task.d.getName()); , но я продолжаю получать имя собаки по умолчанию, которое является «DogName». Как мне переносить значения из AsyncTask?
[Посмотрите на этот ответ] (http://stackoverflow.com/a/7618705/593709) –
да; Log.e («Собака», d.getName()) показывает догма как «новое имя собаки» –
Спасибо за вашу помощь. Адил, я не понял вас, когда я прочитал его раньше, но после того, как он его проработал Что ж. –