Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从碎片上反压_Android_Android Fragments_Popup - Fatal编程技术网

Android 从碎片上反压

Android 从碎片上反压,android,android-fragments,popup,Android,Android Fragments,Popup,我有一个问题,需要帮助重新分级 我的应用程序中有两个片段,比如片段A和片段B,当我的应用程序打开时,片段A将首先出现(当按下按钮时它包含一个按钮,称为片段B)。现在片段B包含一个按钮(比如按钮C),当按下按钮C时,弹出窗口将出现 我所面临的问题是,当我从片段B反向按压时,弹出窗口关闭,工作正常,但它加载片段A 我不想在背压机上加载片段A。在反按时,如果弹出窗口正在显示,则应将其关闭并保留在片段B中;如果弹出窗口未显示,则应退出应用程序 我尝试了:我在片段B中创建了接口,并在活动中获得了popwi

我有一个问题,需要帮助重新分级

我的应用程序中有两个片段,比如片段A和片段B,当我的应用程序打开时,片段A将首先出现(当按下按钮时它包含一个按钮,称为片段B)。现在片段B包含一个按钮(比如按钮C),当按下按钮C时,弹出窗口将出现

我所面临的问题是,当我从片段B反向按压时,弹出窗口关闭,工作正常,但它加载片段A

我不想在背压机上加载片段A。在反按时,如果弹出窗口正在显示,则应将其关闭并保留在片段B中;如果弹出窗口未显示,则应退出应用程序

我尝试了:我在片段B中创建了接口,并在活动中获得了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;

            }
        }
    }
如果弹出窗口可见,这将关闭该窗口,否则将完成该活动


如果弹出窗口可见,这将关闭该窗口,或者完成该活动

您可以尝试此操作,它也可以用于带有片段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()。它应该会起作用。