FCM通知意图处理

时间:2018-09-29 08:09:40

标签: android android-fragments android-intent interface firebase-cloud-messaging

我有一个活动“ 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);
    }
}

现在该怎么办?? 我对通知还有其他疑问。 当应用程序处于前台或后台时,通知会到达。 如何检查它是在前台还是在后台?

0 个答案:

没有答案
相关问题