Android 当我们只有一个片段时,句柄“BackPressed”
我有一个Android 当我们只有一个片段时,句柄“BackPressed”,android,android-fragments,onbackpressed,Android,Android Fragments,Onbackpressed,我有一个活动,它只有一个片段。我想处理反压功能。当用户按back键时,程序应返回到活动。我知道这很简单,但我尝试过Stackoverflow上提到的一些解决方案,但都不起作用。例如,我尝试了以下方法: public void onBackPressed() { int count = getFragmentManager().getBackStackEntryCount(); if (count == 0) { super.onBackPressed();
活动
,它只有一个片段
。我想处理反压
功能。当用户按back键时,程序应返回到活动
。我知道这很简单,但我尝试过Stackoverflow上提到的一些解决方案,但都不起作用。例如,我尝试了以下方法:
public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();
if (count == 0) {
super.onBackPressed();
//additional code
} else {
getFragmentManager().popBackStack();
}
}
您的代码似乎是正确的。您是否使用
addToBackStack
将Fragment
添加到backstack?看看这个。它与您的代码类似。您的代码似乎是正确的。您是否使用addToBackStack
将Fragment
添加到backstack?看看这个。它与您的类似。据我所知,您所要做的就是当用户按下main活动上的后退键时。
- 如果后堆栈中有超过1个片段,只需弹出片段即可
- 如果后堆栈中只有1个片段,那么将忽略第一次后按,并且您希望运行一些额外的代码。然后,如果用户再次按后退键,您的
main活动将完成
private boolean ignoredFirstBackPressed = false;
@Override
public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();
if (count == 1) {
// If there is only one fragment in back stack
if (!ignoredFirstBackPressed) {
// additional code
ignoredFirstBackPressed = true;
} else {
finish();
}
} else {
getFragmentManager().popBackStack(); // or super.onBackPressed()
}
}
据我所知,当用户在
MainActivity
- 如果后堆栈中有超过1个片段,只需弹出片段即可
- 如果后堆栈中只有1个片段,那么将忽略第一次后按,并且您希望运行一些额外的代码。然后,如果用户再次按后退键,您的
main活动将完成
private boolean ignoredFirstBackPressed = false;
@Override
public void onBackPressed() {
int count = getFragmentManager().getBackStackEntryCount();
if (count == 1) {
// If there is only one fragment in back stack
if (!ignoredFirstBackPressed) {
// additional code
ignoredFirstBackPressed = true;
} else {
finish();
}
} else {
getFragmentManager().popBackStack(); // or super.onBackPressed()
}
}
我不明白你的意思point@IntelliJAmiya我尝试了你们的解决方案,但当我按下“后退”键时,程序就退出了。你们说只有一个片段,但你们正在检查“后退”中是否还有另一个片段,对吗?我不明白你们的意思point@IntelliJAmiya我试过你的解决方案,但当我按下返回键时,程序就退出了。你说只有一个片段,但您正在检查backStack中是否有另一个片段,是否正确?我将片段添加到
addToBackStack
并返回到我的活动。但我的应用程序显示空白活动!你能展示一下你是如何创建和添加片段的吗?可能是您正在使用SupportFragmentManager
添加片段,而FragmentManager
正在返回计数0。我将片段添加到addToBackStack
并返回到我的活动。但我的应用程序显示空白活动!你能展示一下你是如何创建和添加片段的吗?可能是您正在使用SupportFragmentManager
添加片段,并且FragmentManager
返回计数0。