Android 从碎片上反压
我有一个问题,需要帮助重新分级 我的应用程序中有两个片段,比如片段A和片段B,当我的应用程序打开时,片段A将首先出现(当按下按钮时它包含一个按钮,称为片段B)。现在片段B包含一个按钮(比如按钮C),当按下按钮C时,弹出窗口将出现 我所面临的问题是,当我从片段B反向按压时,弹出窗口关闭,工作正常,但它加载片段A 我不想在背压机上加载片段A。在反按时,如果弹出窗口正在显示,则应将其关闭并保留在片段B中;如果弹出窗口未显示,则应退出应用程序 我尝试了:我在片段B中创建了接口,并在活动中获得了popwindow的实例Android 从碎片上反压,android,android-fragments,popup,Android,Android Fragments,Popup,我有一个问题,需要帮助重新分级 我的应用程序中有两个片段,比如片段A和片段B,当我的应用程序打开时,片段A将首先出现(当按下按钮时它包含一个按钮,称为片段B)。现在片段B包含一个按钮(比如按钮C),当按下按钮C时,弹出窗口将出现 我所面临的问题是,当我从片段B反向按压时,弹出窗口关闭,工作正常,但它加载片段A 我不想在背压机上加载片段A。在反按时,如果弹出窗口正在显示,则应将其关闭并保留在片段B中;如果弹出窗口未显示,则应退出应用程序 我尝试了:我在片段B中创建了接口,并在活动中获得了popwi
@Override
public void onBackPressed() {
super.onBackPressed();
if(popupWindow!=null && popupWindow.isShowing()){
popupWindow.dismiss();
backpopwindow.dismiss();
}
}
@Override
public void onHandleRequest(PopupWindow popupWindow, PopupWindow backpopwindow, String fragmentName) {
if (fragmentName != null) {
this.fragmentName = fragmentName;
if (popupWindow != null) {
this.popupWindow = popupWindow;
this.backpopwindow = backpopwindow;
}
}
}
如果弹出窗口可见,这将关闭该窗口,否则将完成该活动
如果弹出窗口可见,这将关闭该窗口,或者完成该活动您可以尝试此操作,它也可以用于带有片段B的后堆栈和弹出窗口
@Override
public void onBackPressed() {
//super.onBackPressed();
if(popupWindow!=null && popupWindow.isShowing()){
popupWindow.dismiss();
//backpopwindow.dismiss();
return;
}
if (getSupportFragmentManager().getBackStackEntryCount() > 0)
{
getSupportFragmentManager().popBackStack();
}
else
{
finish();
}
}
您可以试试这个,它将用于带有片段B的后堆栈和弹出窗口
@Override
public void onBackPressed() {
//super.onBackPressed();
if(popupWindow!=null && popupWindow.isShowing()){
popupWindow.dismiss();
//backpopwindow.dismiss();
return;
}
if (getSupportFragmentManager().getBackStackEntryCount() > 0)
{
getSupportFragmentManager().popBackStack();
}
else
{
finish();
}
}
隐藏super.onBackPressed();并运行.else条件调用getActivity().finish()。它应该可以工作。hide super.onBackPressed();并运行.else条件调用getActivity().finish()。它应该会起作用。