Адаптер Recyclerview не работает внутри метода фрагмента onResume в Viewpager - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь прослушать событие click внутри моего метода onResume для фрагмента.У меня есть два фрагмента в моем окне просмотра, и если я использую onResume в обоих фрагментах, только один из них работает, другой не работает.Вот что я делаю.

Фрагмент 1

public void onResume() {
    super.onResume();
    adapter.setOnItemClickListener(new catAdapterBlack.MyClickListener() {
        @Override
        public void onItemClick(String position, int pos, int posi, View v) {
         ... doing some stuff...
        }
    });


    subAdapter.setOnItemClickListener(new subcatAdapter.MyClickListener() {
        @Override
        public void onItemClick(String position, int pos, View v) {
            ... doing some stuff...
    });
}

Фрагмент 2

public void onResume() {
    super.onResume();
    adapter.setOnItemClickListener(new catAdapterBlack.MyClickListener() {
        @Override
        public void onItemClick(String position, int pos, int posi, View v) {
         ... doing some stuff...
        }
    });


    subAdapter.setOnItemClickListener(new subcatAdapter.MyClickListener() {
        @Override
        public void onItemClick(String position, int pos, View v) {
            ... doing some stuff...
    });
}

Я используюодинаковые адаптеры в обоих фрагментах.

Теперь, когда я искал здесь, я нашел это решение ниже, но оно также не работает.Когда я открываю свой первый фрагмент, приложение вылетает с ошибкой, вызывая MyClickListener для пустой ссылки на объект. До сих пор я пробовал каждый метод.Я попытался вызвать onresume в первом фрагменте и ниже (setUserVisibleHint) решение во втором фрагменте.но опять же не работает, пока приложение не падает таким образом.Я хочу вызвать Myclicklistener внутри обоих фрагментов.

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if(isVisibleToUser) {
        init();
    } else {

    }
}

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Это будет работать:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser) {
    // Here you need to check if your adapter is not null and initialize your adapters again
} else {

}
}

Все, что вам нужно, это проверить, не равен ли ваш адаптер нулю, возможно, вам придется инициализировать его снова.

0 голосов
/ 23 января 2019

Переместите код с onResume на onCreateView после установки адаптеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...