www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

Como llamar a la función de la clase de referencia a la clase?

d_reseller 2018-10-30 00:11:31

Hay MainActivity y la clase de la API.

Al iniciar la actividad, se envía una solicitud al servidor. Después de enviar la consulta debe devolver el resultado en función de onRequestEnd en MainActivity.

En el API durante la inicialización de la clase se da la clase y el contexto de la MainActivity.

Como se puede llamar onRequestEnd() de la API, teniendo en cuenta que la API se puede acceder desde diferentes activity y siempre devuelve el resultado en onRequestEnd()?

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        API API = new API(MainActivity.class, MainActivity.this);
        API.request("getStartData");
    }

    public void onRequestEnd(String result) {
         showToast("request end");
    }

    void showToast(final String text) {
        runOnUiThread(new Runnable() {
            public void run() {
                Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show();
            }
        });
    }
}


public class API {
    private static Context context = null;
    private static Class callbackClass = null;

    public API(Class cls, Context cntxt){
        context = cntxt;
        callbackClass = cls;
    }

    public void request(String method) {
        new Request().execute(method);
    }

    public class Request extends AsyncTask<String, String, String> {
        @Override
        protected String doInBackground(String... params) {
            //запрос к api
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            // вызов MainActivity.onRequestEnd
        }

    }
}

onepavel 2018-10-30 00:24:15

Yo supongo que lo que tienes escrito no muy correctamente.
en este post, tu colega se ha avanzado en las consultas un poco mejor
Como pasar los datos en la corriente principal de CallBack okhttp Android?

Pero se puede y lo intente

public class API {
    private static Context context = null;
    private static MainActivity callbackClass = null;

    public API(MainActivity cls, Context cntxt){
        context = cntxt;
        callbackClass = cls;
    }

    public void request(String method) {
        new Request().execute(method);
    }

    public class Request extends AsyncTask<String, String, String> {
        @Override
        protected String doInBackground(String... params) {
            //запрос к api
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            callbackClass.onRequestEnd(result);
        }
    }
}


d_reseller 2018-10-30 00:33:10

onepavel, послежу por que la pregunta.

Cuando se llama a onRequestEnd de directamente callbackClass el compilador devolverá un error

error: cannot find symbol method onRequestEnd(String)

rwBFGyv_e7U.jpg

En la cuenta de la similitud - sí, también es necesario para devolver los datos en la corriente principal, pero aún es necesario antes de esto, procesar a los errores de ambos, y sin una clase no es indispensable.


TosterModerator 2018-10-30 01:57:00

d_reseller estimado usuario, le recomendamos que vuelva a prestar más atención en el apartado 3.1 en el reglamento de funcionamiento del servicio (y en particular, en su último párrafo). En caso contrario, sus preguntas serán removidos por causa de etiqueta de spam, y la violación sistemática de conducirán al bloqueo de la cuenta.


Total answers: 1

oldhowl 2018-10-30 02:27:52

Diga método onRequestEnd en el método request y дергай después de una consulta a la api

d_reseller 2018-10-30 04:26:44

Puede el ejemplo de código, por favor?


bask 2018-11-02 05:34:26

oldhowl, iii. El código de Youtube! Sí, incluso con la publicidad


Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.