如何在通知上打开特定的viewpager选项卡点击android



现在我正在打开一个带有额外数据的通知点击活动。通过此活动,我想在单击通知数据时打开一个特定的视图寻呼机选项卡。

@Override
protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.fcmnotificationactivity);

     readMore = (Button) findViewById(R.id.openACtivity);
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
     setSupportActionBar(toolbar);
     getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
public void OpenActivity() {
}
@Override
public boolean onSupportNavigateUp() {
    finish();
    return false;
}
@Override
public void onBackPressed() {
    super.onBackPressed();
    finish();
}

从您有意发送额外数据的地方,也发送您想要点击的选项卡的位置,并在选项卡活动中在onCreate中获取该位置,如下所示:

viewpager.setCurrentItem(getIntent().getIntExtra("position",DEFAULT_INT_VALUE));

创建类似的视图寻呼机片段

public class TabFragment extends BaseFragments {
private static int argument = 0;
private TabLayout tabLayout;
private ViewPager viewPager;
private TextView employeeReferralText;
Context context;
private static Bundle bundle;
private SetName setName;
private SharedPreferences sharedPreferences;
public static TabFragment newInstance(int arg, Bundle bundles) {
    TabFragment fragment = new TabFragment();
    argument = arg;
    bundle = bundles;
    return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_tab, container, false);
    try {
        context = getActivity();

        viewPager = (ViewPager) view.findViewById(R.id.viewpager);
        setupViewPager(viewPager);
        tabLayout = (TabLayout) view.findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
        bundle = getArguments();
        setActionBar();
    } catch (Exception e) {
        e.printStackTrace();
    }

    return view;
}
private void setupViewPager(ViewPager viewPager) {
    try {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());
        adapter.addFrag(new FirstFragment(), "firstFragment");
        adapter.addFrag(new SecondFragment(),"secondFragment");
        viewPager.setAdapter(adapter);
        if (argument == 0)
            ;
        else {
            viewPager.setCurrentItem(argument, true);
            argument = 0;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
static class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }
    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }
    @Override
    public int getCount() {
        return mFragmentList.size();
    }
    public void addFrag(Fragment fragment, String title) {
        try {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

}

在新的意图你的活动

@OverrideNewIntent上的公共无效(Intent Intent){尝试{

        if (intent != null) {
          replaceFragment(context,TabFragment.newInstance(0,new Bundle()));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

最新更新