您的位置:首页 > 移动开发 > Android开发

android 连按两次Back键退出 (单Activity多Fragment,保留根Fragment)

2017-09-25 20:30 387 查看

代码

protected boolean doubleBackToExitPressedOnce = false;

protected void backStackAndDoubleBackExit() {
int backStackEntryCount = 2;
int delayMillis = 3 * 1000;

if (getSupportFragmentManager().getBackStackEntryCount() > backStackEntryCount ) {
// super.onBackPressed();
getSupportFragmentManager().popBackStackImmediate();
} else if (getSupportFragmentManager().getBackStackEntryCount() == backStackEntryCount ) {

if (doubleBackToExitPressedOnce) {
finish();
}
doubleBackToExitPressedOnce = true;
Snackbar.make(getRootView(), "please click back button again to exit",
Snackbar.LENGTH_SHORT).show();
new android.os.Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, delayMillis );
}

}


根据 getBackStackEntryCount(); 方法,判断Fragment返回栈,Fragment数量

使用 popBackStackImmediate() 方法,消除super关键字的限制

添加变量 backStackEntryCount, 存储根Fragment所占数量

Toast 更改为 Snackbar

使用

1 代码复制至BaseActivity

2 xxxActivity 继承BaseActivity

3 onbackPressed()方法调用backStackAndDoubleBackExit()方法

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: