我有一个查询,需要帮助重新整理它。
我的应用程序中有两个片段,比如片段A和片段B,当我的应用程序打开时,片段A将首先出现(按下按钮时它包含一个按钮,它调用片段B)。现在片段B包含一个按钮(让我们说按钮C),按下按钮C,将出现popwindow。
我正面临的问题,当我从片段B中退出时,流行窗口解散,工作正常,但它加载了片段A.
我不想在Back Press上加载片段A.在Back Press上,如果显示弹出窗口,那么它应该被关闭并保留在片段B中,如果popwindow没有显示,那么它应该离开应用程序。
我试过:我在片段B中创建了接口,并在Activity中获取了popwindow的实例。
@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;
}
}
}
答案 0 :(得分:2)
@Override
public void onBackPressed() {
if(popupWindow!=null && popupWindow.isShowing()){
popupWindow.dismiss();
backpopwindow.dismiss();
} else {
finish();
}
}
这将关闭popupWindow(如果可见),或者完成活动
答案 1 :(得分:1)
你可以尝试这个,它也适用于带有Fragment 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();
}
}