我有一个活动“ A”,它有一个加载4个片段的viewpager。 当我收到通知时,我需要进入viewpager中的第3个片段。 假设第三个片段是“ Frag3”。第三个片段是嵌套片段。它还有另外两个片段,比如说“ Frag3A”和“ Frag3B”。
因此,这里的真实情况是,如果我收到标题为“ NOT_A”的通知,则需要显示“ Frag3A”,如果是“ NOT_B”,则需要显示“ FRAG3B”。
因此,当我收到通知时,我会调用意图(上下文->活动“ A”),其中包含一些旨在标识“ Frag3A”或“ Frag3B”的数据。因此在活动A中,我从意图和加载中获取数据“ Frag3”。这就是我所要去的。我需要在Frag3A和Frag3B之间进行选择。
因此,在这种情况下,我在活动A中创建了一个接口,并在Frag3中实现了该接口。我从viewpager Adapter获得对frag3的引用。下面共享代码。但是我得到的参考是空的。
outerHeight(true)
然后从此getRegisteredFragment中获取对Frag3的引用并分配给侦听器。但是此getRegisteredFragment返回null。
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);
}
}
现在该怎么办?? 我对通知还有其他疑问。 当应用程序处于前台或后台时,通知会到达。 如何检查它是在前台还是在后台?