从碎片中按下

时间:2016-11-16 09:43:19

标签: android android-fragments popup

我有一个查询,需要帮助重新整理它。

我的应用程序中有两个片段,比如片段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;

            }
        }
    }

2 个答案:

答案 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();
    }
}