Задать вопрос
@d_reseller

Как вызвать функцию из класса по ссылке на класс?

Есть MainActivity и класс API.

При запуске activity отправляется запрос к серверу. После отправки запроса нужно вернуть результат в функцию onRequestEnd в MainActivity.

В API при инициализации класса отдается класс и контекст MainActivity.

Как можно вызвать onRequestEnd() из API, учитывая то, что к API можно будет обращаться так же из разных activity и всегда возвращать результат в 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
        }

    }
}
  • Вопрос задан
  • 289 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@oldhowl
Передай метод onRequestEnd в метод request и дергай его после запроса к api
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы