@Drew20
Недопрограммист Android))

Как вызвать метод фрагмента из другого фрагмента?

Я работаю с приложением в котором есть два списка сообщений, эти списки размещены в фрагментах, данные для заполнения списков берутся с сервера, что-бы сервер выдал нам эти данные нужен access_token, который со временем протухает и нужно посылать запрос на новый, в ответе приходит новый токен который я сохраняю в SharedPreferences. Так вот собственно и сам вопрос - как после получения нового токена, вызвать нужный мне фрагмент и его пересоздать. Вот метод который я использую для обновления токенов:
mAPIService2.getNewToken(new ReqAccessToken(token)).enqueue(new Callback<ResNewTokens>() {
            @Override
            public void onResponse(@NonNull Call<ResNewTokens> call, @NonNull Response<ResNewTokens> response) {
                if (response.isSuccessful()) {

                    String n_access_token = Objects.requireNonNull(response.body()).getAccess_token();
                    String n_refresh_token = Objects.requireNonNull(response.body()).getRefresh_token();

                    new_acc_tok = getActivity().getSharedPreferences("access_token", 0);
                    SharedPreferences.Editor editor = new_acc_tok.edit();
                    editor.putString(ACCESS_TOKEN, n_access_token);
                    editor.apply();

                    new_ref_tok = getActivity().getSharedPreferences("refresh_token", 0);
                    SharedPreferences.Editor editor1 = new_ref_tok.edit();
                    editor1.putString(REFRESH_TOKEN, n_refresh_token);
                    editor1.apply();

                    received();

                } else {
                    ResponseBody errorBody = response.errorBody();
                    try {
                        if (Objects.requireNonNull(errorBody).string().contains("refresh_token_expired")) {
                            logOut();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }

            @Override
            public void onFailure(@NonNull Call<ResNewTokens> call, @NonNull Throwable t) {

            }


как видно из кода, я после получения токенов вызываю метод который тянет с сервера список сообщений с учетом нового access_token, а когда я открываю вкладку с отправленными сообщениями у меня пустой список, и выводится в логах сообщение, что access_token протух и нужно обновить, короче в итоге меня выкидывает на экран логина, после сообщения что рефреш уже не рабочий. Я не смогу найти нормального способа который пересоздает фрагмент, вернее мне нужно не весь фрагмент может пересоздавать а только вызывать функцию которая есть в другом фрагменте. Ведь если вызвать фрагмент то разве что только для замещения текущего. Короче не очень понятная ситуация получается если честно. Если кто знает как исправить сложившуюся ситуацию, то буду рад помощи.
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы