直接给代码*-*
Fragment:
public boolean onKeyDown(int keyCode, KeyEvent event){if ((keyCode == KeyEvent.KEYCODE_BACK)){//执行操作((MainActivity) Objects.requireNonNull(getActivity())).viewPager.setCurrentItem(3); }return true;}
MainActivity:
@BindView(R.id.viewPager)public ViewPager viewPager;Fragment currentFragment;
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels){}@Overridepublic void onPageSelected(int position){FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();List<Fragment> fragments = fragmentManager.getFragments();currentFragment=fragments.get(position);……}@Overridepublic void onPageScrollStateChanged(int state){}});setupViewPager(viewPager);
private void setupViewPager(ViewPager viewPager){adapter = new ViewFragmentPagerAdapter(getSupportFragmentManager());adapter.addFragment(MainFragment.newInstance(getResources().getString(R.string.app_title)));adapter.addFragment(new Fragment());……viewPager.setAdapter(adapter);viewPager.setOffscreenPageLimit(5);}
// 用来计算返回键的点击间隔时间private long exitTime = 0;@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event){if(currentFragment!=null&¤tFragment instanceof AboutApp){((AboutApp)currentFragment).onKeyDown(keyCode, event);return true;} else if (isTaskRoot()){if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){if ((System.currentTimeMillis() - exitTime) > 2000){Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();exitTime = System.currentTimeMillis();}else{finish();}return true;}}return super.onKeyDown(keyCode, event);}