#android #android-fragments #data-binding #android-viewbinding
#Android #android-фрагменты #привязка к данным #android-привязка к просмотру
Вопрос:
У меня есть 2 фрагмента в макете вкладки, быстрое переключение между ними приводит к тому, что представления возвращаются как null, используя привязку к просмотру. Это из-за задержки при создании класса FragmentXBinding?
Пример использования:
chatadapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onItemRangeInserted(int positionStart, int itemCount) {
binding.chatRecyclerView.smoothScrollToPosition(0);
}
});
Ошибка:
java.lang.NullPointerException: Attempt to read from field 'androidx.recyclerview.widget.RecyclerView com.iku.databinding.FragmentChatBinding.chatRecyclerView' on a null object reference
Комментарии:
1. Ваше
binding
значение null . убедитесь, что вы инициализируете привязку представления внутриonCreateView
2. это внутри
onCreateView
, и я получаю это при очень быстром переключении между фрагментами.3. оооо .. в этом случае инициализируйте свою привязку внутри
onViewCreated(...)
4. @chandmohd это не работает
5. @ThomasBernhard Я не был полностью! Но лучше поместить код, связанный с привязкой к просмотру, в
onViewCreated(..)
, и пришлось удалить несколько прослушивателей в реальном времени в приложении, чтобы избежать этого NPE. Даже отсоединение прослушивателя вonStop()
Ответ №1:
FragmentX
FragmentXBinding binding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentChatBinding.inflate(inflater, container, false);
init();
return binding.getRoot();
}
private void init() {
// all initialization
}
Это помогает мне решить мою ошибку с нулевой ссылкой