В настоящее время у меня возникают проблемы при получении значения из AsyncTask, который получает данные из соединения JSON. Я рассмотрел несколько примеров, но в основном я видел только публикацию результатов из 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?