У меня есть MainActivity
с ViewPager
. ViewPager
состоит из двух Fragments
, каждый из которых имеет один RecyclerView
. Мне нужно иметь ссылку на RecyclerView
для обновления/анимации и т. Д. В Fragment
.Фрагмент onCreateView не сохраняет ссылку на элемент
Проблема возникает при вращении экрана, потому что по какой-то причине я не могу установить переменную-член обратно на RecyclerView
.
public abstract class NotifListFragment extends Fragment {
protected RecyclerView mRecyclerView;
public NotifListFragment() {
// Required empty public constructor
EventBusHelper.getBus().register(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mRecyclerView = (RecyclerView) inflater.inflate(R.layout.fragment_notif_list, container, false);
setupRecyclerView(mRecyclerView);
return mRecyclerView;
}
Так вот в onCreateView
я всегда раздувают фрагмент и сохранить ссылку в mRecyclerView
переменной. Однако, когда я позже попытаюсь получить к нему доступ, он равен нулю.
Я использую Otto для вызова метода Fragment
onDataChanged()
. Он вызывается, когда нажата кнопка в RecyclerView
.
@Subscribe
public void onDataChanged(DataChangedEvent event) {
List<CustomNotification> oldData = ((NotifRecyclerViewAdapter) mRecyclerView.getAdapter()).getmValues();
List<CustomNotification> newData = getNotifications();
}
mRecyclerView.getAdapter()
null в этом обращении.
Fragment's getView()
также возвращается null. Что происходит?
Что значит «когда я пытаюсь получить к нему доступ»? – JanithaR
Я отредактировал вопрос –
Как вы уверены, что onDataChanged вызывается после onCreateView? –