Есть фрагмент. В нём с сервера в методе onViewCreated() подгружаю историю сообщений между 2-мя пользователями
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//....
new Thread(()-> {
try {
Observable.fromArray(api.getMessages("sender", "recipient"))
.subscribeOn(Schedulers.newThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(message -> {
addMessage(message);
});
} catch (Exception ex) {
Toast.makeText(view.getContext(), "Упс! Что-то пошло не так!", Toast.LENGTH_LONG).show();
ex.printStackTrace();
}
}).start();
}
Проблема:
При старте фрагмента, сообщения полученные с сервера не отображаются, при том, что запрос на сервер уже был сделан и был получен ответ. Выглядит это так:
Но как только я дотрагиваюсь именно до EditText (Ваше сообщение)
Мои сообщения тут же появляются. Выглядит это так:
Как можно исправить, чтобы сообщения показывались при старте фрагмента?
Попробуйте тогда программно открыть клавиатуру по завершению работы обсервера.
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.doOnComplete(() -> {
showInputMethod();
})
.subscribe(message -> {
addMessage(message);
});
public void showInputMethod() {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости