Android 我有一个堆栈项,我想通过双击back按钮退出应用程序
如果我有一个堆栈项,我想通过双击back按钮退出应用程序,我如何知道何时堆栈上会有一个项? 重写方法onBackPressed中的我的代码 如果(getFragmentManager().GetBackBackbackEntryCount()==0){Android 我有一个堆栈项,我想通过双击back按钮退出应用程序,android,android-studio,android-fragments,Android,Android Studio,Android Fragments,如果我有一个堆栈项,我想通过双击back按钮退出应用程序,我如何知道何时堆栈上会有一个项? 重写方法onBackPressed中的我的代码 如果(getFragmentManager().GetBackBackbackEntryCount()==0){ 这是我的解决方案,您可以按照我在代码中的注释进行操作 private static final long DURATION_BETWEEN_BACK_PRESS = 1000; private final Handler handler = ne
这是我的解决方案,您可以按照我在代码中的注释进行操作
private static final long DURATION_BETWEEN_BACK_PRESS = 1000;
private final Handler handler = new Handler();
private boolean isBackButtonPressed = false;
private final Runnable resetIsBackButtonPressed = new Runnable() {
@Override
public void run() {
isBackButtonPressed = false;
}
};
@Override
public void onBackPressed() {
FragmentManager fragmentManager = getFragmentManager();
int backStackEntryCount = fragmentManager.getBackStackEntryCount();
if (backStackEntryCount == 0) {
// There is no item in back stack. This happens when you do not add any fragment to activity.
super.onBackPressed();
return;
}
if (backStackEntryCount > 1) {
// The back stack has more than one item, just pop top item from the stack.
fragmentManager.popBackStackImmediate();
return;
}
// The back stack has only one item left.
if (!isBackButtonPressed) {
// The first time back button pressed.
isBackButtonPressed = true;
// If users do not press back key second time in a given duration, then just reset back pressed status.
handler.postDelayed(resetIsBackButtonPressed, DURATION_BETWEEN_BACK_PRESS);
} else {
// The second time back button pressed.
handler.removeCallbacks(resetIsBackButtonPressed);
finish();
}
}
这正是我的意思,特坎克斯!
private static final long DURATION_BETWEEN_BACK_PRESS = 1000;
private final Handler handler = new Handler();
private boolean isBackButtonPressed = false;
private final Runnable resetIsBackButtonPressed = new Runnable() {
@Override
public void run() {
isBackButtonPressed = false;
}
};
@Override
public void onBackPressed() {
FragmentManager fragmentManager = getFragmentManager();
int backStackEntryCount = fragmentManager.getBackStackEntryCount();
if (backStackEntryCount == 0) {
// There is no item in back stack. This happens when you do not add any fragment to activity.
super.onBackPressed();
return;
}
if (backStackEntryCount > 1) {
// The back stack has more than one item, just pop top item from the stack.
fragmentManager.popBackStackImmediate();
return;
}
// The back stack has only one item left.
if (!isBackButtonPressed) {
// The first time back button pressed.
isBackButtonPressed = true;
// If users do not press back key second time in a given duration, then just reset back pressed status.
handler.postDelayed(resetIsBackButtonPressed, DURATION_BETWEEN_BACK_PRESS);
} else {
// The second time back button pressed.
handler.removeCallbacks(resetIsBackButtonPressed);
finish();
}
}