Valor devuelto del método onPostExecute de la clase AsyncTask

Ok así que ahora tengo la Class A que contiene algunos spinners que los valores serán poblados por la Class B que extiende AsnycTask que agarra los valores de spinner de un servicio web. En la clase B logro recuperar los valores, mostrando en un Toast. El problema ahora es cómo puedo pasar los valores de spinner de nuevo a la clase A?

He intentado

¿Puede OnPostExcecute método en AsyncTask RETURN valores?

Pasando Class A a Class B y almacenar el valor en una variable pública de la Class A como abajo

 @Override protected void onPostExecute(String result) { classA.classAvariable = result; } 

Sin embargo, cada vez que intento leer la classAvariable siempre obtengo una NullPointer Exception . Parece que la variable nunca fue asignada con el resultado. Para fines de legibilidad que necesitaba para separar la Class B lugar de utilizar como una clase en línea.

¿Alguna idea de mis compañeros programadores Java?

Supongo que usted está tratando de leer la clase de una variable antes de que se está estableciendo .. Intenta hacerlo utilizando callbacks .. en la función de devolución de llamada pasar los valores y actualizar sus hilanderos ..

Puede crear interface , pasarla a AsyncTask (en constructor) y, a continuación, llamar al método en onPostExecute

Por ejemplo:

Su interfaz:

 public interface OnTaskCompleted{ void onTaskCompleted(values); } 

Su Actividad:

 public YourActivity implements OnTaskCompleted{ //your Activity YourTask task = new YourTask(this); // here is the initalization code for your asyncTask } 

Y su AsyncTask:

 public YourTask extends AsyncTask<Object,Object,Object>{ //change Object to required type private OnTaskCompleted listener; public YourTask(OnTaskCompleted listener){ this.listener=listener; } //required methods protected void onPostExecute(Object o){ //your stuff listener.onTaskCompleted(values); } } 

Problema aquí es que cuando se ejecuta su AsynchTask, su método doInBackground () ejecutar en el hilo separado y el hilo que han iniciado este AsynchTask avanzar, por lo que los cambios ocurren en su variable por AsynchTask no refleja en el hilo padre (quien declaró este AsynchTask) inmediatamente.

Ejemplo:

 class MyAsynchTask { doInbackground() { a = 2; } } int a = 5; new MyAsynchTask().execute(); 

// aquí sigue siendo un 5

Cree una interfaz como OnCompletRequest() luego pase a su constructor ClassB y simplemente llame al método dentro de esta interfaz como complete(yourList list) en el método de onPostExecute(String result)

  • VideoView no se inicia cuando está invisible
  • Cómo utilizar la tarea Async para streaming de audio en android
  • Consideraciones sobre el diseño de Android: AsyncTask vs Service (IntentService?)
  • ¿Cómo puedo mostrar un ProgressBar sólo después de un retardo mínimo?
  • Android ListView actualización de las miniaturas de imagen con AsyncTask causas Ver reciclado
  • ¿Mostrar imágenes en Android usando TextView y Html.ImageGetter asincrónicamente?
  • ¿Cómo comprobar el número de teléfono propio introducido por el usuario en EditText?
  • Android, AsyncTask con kSoap2
  • Cómo asegurarse de que los datos se guardarán antes de que android mata un proceso
  • Tareas de continuación suspendidas al utilizar LimitedConcurrencyLevelTaskScheduler
  • ¿Usando OKHttp, cuál es la diferencia entre la petición síncrona en AsyncTask y la petición asíncrona de OKhttp?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.