版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/admans/article/details/82377809
直接给代码*-*
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()
{
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
@Override
public void onPageSelected(int position)
{
FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager();
List<Fragment> fragments = fragmentManager.getFragments();
currentFragment=fragments.get(position);
……
}
@Override
public 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;
@Override
public 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);
}