当前位置: 首页 > 知识库问答 >
问题:

在对话框中按下“确定”按钮后更改屏幕

常朗
2023-03-14

在更改屏幕之前,我试图向用户显示带有对话框的成功消息。我希望它等待用户单击ok按钮或按Enter键,然后更改屏幕。由于我必须在程序中放置大量对话框,为了避免重复,我尝试在MainClass中使用一个createDialog方法来创建对话框,并将其添加到我传递给该方法的阶段。但问题是,我希望它将屏幕更改为用户按下ok按钮后传递给它的屏幕,但dialog的结果函数是一个内部方法,它不访问我传递给函数的屏幕。那么我有什么办法可以做到这一点吗?

public class MainClass extends Game {
    .
    .
    .

    public void createDialog(String message, boolean isWarning, Stage stage, Screen screen) {
        Skin skin2Json = new Skin(Gdx.files.internal("freezing/skin/freezing-ui.json"));
        Dialog dialog;
        String title = "Success Message";
        if (isWarning) title = "Error";

        dialog = new Dialog(title, skin2Json, "dialog"){
            @Override
            protected void result(Object object) {
                if((Boolean) object)
                    //if it is a success message ,I want to set screen to the screen passed to the createDialog function
            }
        };
        dialog.getBackground().setMinWidth(400);
        dialog.getBackground().setMinHeight(200);
        dialog.text(message);
        dialog.button("Ok", true);
        dialog.key(Input.Keys.ENTER, true);
        dialog.show(stage);
    }
}

感谢您的帮助。

共有1个答案

裴嘉许
2023-03-14

我想有不同的方法可以做到这一点,但我的方法是:

  • 在类中使用一个变量,在渲染函数中,触发屏幕的变化
  • 在对话框中点击OK后设置该变量。

这将产生类似于:

public class MainClass extends Game {
    private Boolean ChangeScreen = false;
    
    public void render () {
            // This is your typical render function
            if(ChangeScreen) Game.setscreen(new MyOtherScreen());
    }


    public void createDialog(String message, boolean isWarning, Stage stage, Screen screen) {
        Skin skin2Json = new Skin(Gdx.files.internal("freezing/skin/freezing-ui.json"));
        Dialog dialog;
        String title = "Success Message";
        if (isWarning) title = "Error";

        dialog = new Dialog(title, skin2Json, "dialog"){
            @Override
            protected void result(Object object) {
                if((Boolean) object)
                    // The OK button has been hit
                    ChangeScreen = true;
            }
        };
        dialog.getBackground().setMinWidth(400);
        dialog.getBackground().setMinHeight(200);
        dialog.text(message);
        dialog.button("Ok", true);
        dialog.key(Input.Keys.ENTER, true);
        dialog.show(stage);
    }
}

也许不是最优雅的方式,但它应该能做到。

 类似资料:
  • 我正在使用android导航组件库。我用导航图设置了两个片段。我想在我的片段内按下后退按钮时做一些额外的动作。 我使用这段代码来处理工具栏上的按钮点击,但我也想处理后退按钮按下。我该怎么做?

  • 我正在编写一个小型PyQt4应用程序,它只是一个“是/否”对话框,必须执行一个外部命令(例如“eject/dev/sr0”)并退出。 应用程序运行时,它在按下“是”按钮后执行命令,但我无法在执行命令时使对话框本身退出。 这是我的密码。当我单击“是”时,它会正确地调用'eject/dev/sr0'命令,但在此之后对话框仍然可见。我必须单击“否”关闭应用程序,我希望它在执行命令时自动关闭。我应该添加/

  • 问题内容: [编辑]经过大量挖掘,我发现问题出在我如何将CKEditor集成到页面中。如公认的答案所述,在这种情况下,简单而明显的方法 确实 有效。 你好 在按下“提交”按钮之后,但在实际提交之前,我需要更改表单的值。 我尝试挂钩到表单的“ submit”事件,并在那里手动更改文本字段的值,但是看起来实际上并没有更改提交的值。 有任何想法吗? 问题答案: 我对您的说法感到奇怪,即处理程序对您不起作

  • 这里有一个小问题,就像我在对话框中有回收人员视图fragment.ie在回收人员视图中的银行名称当我们在回收人员视图中选择一家银行并在对话框片段后解雇该名称应该出现在按钮上,即当我们从对话框片段中选择联合银行时,它应该出现在按钮上。问题是当我们单击按钮时,它的文本会发生变化,而不是在解散监听器的时间 这是Dialog解雇代码: 以下是onclick事件,其中打开对话框并打印值: 在以下方面相同:

  • 我有一个按钮(CustomDilaog活动),当点击显示自定义对话框和密码编辑文本,确定按钮和取消按钮时,如果你输入正确的密码,它会打开另一个活动(文本活动),直到现在一切正常, 我有两个部分的问题。 第一部分:当我在(文本活动)并按后退按钮返回(CustomDilaog活动)时,仍然对话框显示在它上面,如何让它关闭 第二部分:对话框启动后,如果我不写密码,只需单击“确定”按钮,edittext为