У меня есть активность "A", в которой есть видоискатель, загружающий 4 фрагментаКогда я получаю уведомление, мне нужно перейти к 3-му фрагменту в viewpager.Допустим, третий фрагмент будет «Frag3».Третий фрагмент - это вложенный фрагмент.У него есть два других фрагмента, скажем, «Frag3A» и «Frag3B».
Таким образом, реальный случай здесь, если я получаю уведомление с заголовком «NOT_A», мне нужно отобразить «Frag3A» и если «NOT_B», то янеобходимо отобразить «FRAG3B».
Поэтому, когда я получаю уведомление, я вызываю намерение (context -> Activity «A») с некоторыми данными с намерением идентифицировать «Frag3A» или «Frag3B».Задание A Я получаю данные из намерения и загружаю «Frag3».Это как я иду.Мне нужно выбрать между Frag3A и Frag3B.
Так что для этого случая я создал интерфейс в Activity A и реализовал его в Frag3.Я получаю ссылку на frag3 из адаптера viewpager. Код приведен ниже.Но ссылка, которую я получаю, является нулевой.
private class ViewPagerAdapter extends FragmentPagerAdapter {
SparseArray<Fragment> registeredFragments = new SparseArray<>();
ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new RoomMatesFragment();
case 1:
return new RoomsFragment();
case 2:
return new ChatFragment();
default:
return new ProfileFragment();
}
}
@Override
public int getCount() {
return 4;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
registeredFragments.put(position, fragment);
return fragment;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
registeredFragments.remove(position);
super.destroyItem(container, position, object);
}
public Fragment getRegisteredFragment(int position) {
return registeredFragments.get(position);
}
}
И из этого getRegisteredFragment я получаю ссылку на Frag3 и присваиваю слушателю. Но этот getRegisteredFragment возвращает ноль.
case Constants.NOTIFICATION_CONTACT_REQUEST:
goToTab(2);//This redirects to Fragment Frag3
listener = (ContactsFragment)getRegisteredFragment(2);
listener.displayContacts();//listener is null.
break;
Чтоделать сейчас.У меня есть некоторые другие сомнения относительно Уведомления.Когда приложение находится на переднем плане или в фоновом режиме, уведомление приходит.Как проверить, находится ли он на переднем плане или на заднем плане?