0 votos

Hola, aqui de nuevo: 

complete mi envio de datos desde un fragment a su Activty con la "interface", 

ahora quiero enviarlo desde el hilo que gatilla el fragment:

osea despues de enviar y confirmar el paso por el asynctask (bien escrito?), que hay recien envie los datos al activity principal.

lo he intentado en onProgress Y PostExecute pero no funciona : aqui indexo el codigo para la interface como lo tengo ahora:

    public MIFRAGMENT() {} //no borrar

    public interface OnMiClickListener {
        void onClickEnMiBoton(OBJETO v);
    }
    private static OnMiClickListener mListnerVacio = new OnMiClickListener() {
        @Override
        public void onClickEnMiBoton(OBJETO v) {
        }
    };
    private OnMiClickListener mListener = mListnerVacio;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (OnMiClickListener) activity;
        } catch (ClassCastException e) {
            throw new IllegalStateException("La clase " + activity.toString() + " debe"+
                    "implementar de la interfaz " + OnMiClickListener.class.getName() + " del Fragment al que quiere escuchar");
        }
    }
    @Override
    public void onDetach() {
        super.onDetach();
        mListener = mListnerVacio;
    }

PDA:

Claramente segui el libro que tienen 

por en Android

4 Respuestas

0 votos
Mejor respuesta

me explico:

es un fragment que actualiza:

cuando el usuario confirma, envia a mi base de datos (web) y al confirmar en el retorno (que claramente es en el hilo secundario) hay debe accionar el Listener  mListener.onClickEnMiBoton(paddock,pos); pero no hay envio o recepcion:

¿entonces como debo gestionar el implement para que en el asynctask funcione

por
seleccionada por
Entonces, comprueba cuando pasas el mListener al interior de la clase AsyncTask no vaya vacío (tendrás que arrancar el AsyncTask en el onAttach para asegurarte). Para ello te recomiendo que lo pases al constructor y lo guardes como variable interna del la clase. Asegura que no se destruye el Fragment, pues si la clase no existe cuando el AsyncTask termine de procesar puede que te de error.
okay, entiendo... lo probare y lo comento

PDA:

por sierto hice una pregunta antes y la formulo de mejor manera: ¿como identifico las versiones de versiones de las librerias ?
¿Te refieres a las bibliotecas que creas o las de terceros? Si es la que creas, en el AndroidManifest las puedes versionar.
0 votos
Pregunta aparte: podrian indicar en que horario es mas factible encotrar un administrador para preguntar,

considerando la zona horaria,  yo soy de chile y  por la hora se que cuando envie la pregunta no pueden ayudarme, gracias.
por
Es un poco complicado decirte horas, posiblemente por la noche en horario Español (por América creo que es por la mañana) sea más fácil que nos encuentres. Aunque intentamos responder lo antes posible y varias veces al día, depende un poco de como tengamos los días de carga de trabajo. Recomiendo que se pregunte en este foro y se aguarde por el correo de contestación, procuramos dar respuesta en menos de un día ;)
0 votos

Hola Pablo,

Creo que entiendo que lo que quieres hacer es tener un hilo que hace algo e inicia un Fragment al que se le mandan datos. Como muy bien intentas, hay que arrancar el Fragment desde el hilo principal, no desde el hilo en segundo plano (más información en http://jarroba.com/asynctask-en-android/). Necesitaría ver el código del hilo, pero se me ocurre que podría ser el Context. Comprueba que si estás pasando el Context al interior de la clase que extiende de AsyncTask.

Mira a ver si es esto. Por cierto, buena implementación del Fragment! :)

por
0 votos

Gracias por tu informacion: 

public void onDetach() {
        super.onDetach();
        /**
        * Lo saque de el onDetach();
        */
        mListener = mListnerVacio;
    }

Y lo puse en el HILO despues de enviar el listener y funciono sin problemas

PDA:

Tendre que leer mas acerca de los ciclos de vida de las distintas clases de android

por