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

Android通过对话框传递变量,该对话框在OnCreate中被忽略

居和顺
2023-03-14

如果您阅读了代码,您可以看到我在对话框后面放置了一条Toast消息。我希望它能够使在同一类中声明为public的“First”变量通过对话框的过程最终到达if语句并最终在if语句中显示Toast消息来获得其值。

最初,我有一个名为“showDialogHOME”的方法,其中传递了以下所有代码。我想我这样做是为了解决这个问题。

此代码位于OnCreate()中

final CharSequence[] items = {"X", "O"};

    final AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
    alertDialog.setCancelable(false);
    alertDialog.setTitle("Who goes first?");
    alertDialog.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int item) {
            if (items[item] == "X") {
                First = 1;
                Toast.makeText(getApplication(), "Computer goes first.", Toast.LENGTH_SHORT).show();
            } else if (items[item] == "O") {
                First = 2;
                if (First == 2) {
                    Toast.makeText(getApplication(), "2 WORKS", Toast.LENGTH_SHORT).show();
                }
            }
            dialog.dismiss();
        }
    });
    alertDialog.show();

    if (First == 1){
        Toast.makeText(getApplication(), "Inside If", Toast.LENGTH_SHORT).show();
    }
    Toast.makeText(getApplication(), "After If Message", Toast.LENGTH_SHORT).show();

共有1个答案

柯鸿云
2023-03-14

问题在于,创建和显示AlertDialog后的行不会在设置值之前等待并执行。

您可能希望使用一个事件:

alertDialog.setOnCancelListener(new OnCancelListener() {

public void onCancel(DialogInterface dialog) {
   if (First == 1){
       Toast.makeText(getApplication(), "Inside If", Toast.LENGTH_SHORT).show();
   }
   else
   {
       Toast.makeText(getApplication(), "After If Message", Toast.LENGTH_SHORT).show();
   }
});

编辑您也可以尝试以下操作:

alertDialog.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int item) {
            if (items[item] == "X") {
                First = 1;
                //Toast.makeText(getApplication(), "Computer goes first.", Toast.LENGTH_SHORT).show();
            } else if (items[item] == "O") {
                First = 2;
                if (First == 2) {
                    //    Toast.makeText(getApplication(), "2 WORKS", Toast.LENGTH_SHORT).show();
                }
            }
            dialog.dismiss();

            if (First == 1) {
                Toast.makeText(getApplication(), "Inside If", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(getApplication(), "After If Message", Toast.LENGTH_SHORT).show();
            }


        }
    });

alertDialog.show();
 类似资料:
  • 本文向大家介绍Android AlertDialog实现分享对话框/退出对话框/下载对话框,包括了Android AlertDialog实现分享对话框/退出对话框/下载对话框的使用技巧和注意事项,需要的朋友参考一下 一.摘要 弹窗通常用于提示用户进行某种操作,比如:点击分享按钮,弹窗分享对话框;双击返回按钮,弹窗退出对话框;下载文件,提示下载对话框等等,分享对话框/退出对话框/下载对话框,都可以直

  • 本文向大家介绍Android中创建对话框(确定取消对话框、单选对话框、多选对话框)实例代码,包括了Android中创建对话框(确定取消对话框、单选对话框、多选对话框)实例代码的使用技巧和注意事项,需要的朋友参考一下 Android中可以创建三种对话框、确定取消对话框、单选对话框、多选对话框 android中的确定取消对话框演示示例 Android中使用单选对话框的演示案例 android中使用多选

  • 对话框的内容不是在页面最初可见,而是在用户操作时显示额外的信息。 Toasts Materialize 提供了非常简单的方法,来弹出一些信息,同时也不会让用户感到突兀。这些 Toasts 显示的位置和大小会随着你的设备的不同而改变。 在 JavaScript 中调用 Materialize.toast() 方法来使用。 // Materialize.toast(message, displayLe

  • 对话框是一个现代GUI应用不可或缺的一部分。对话是两个人之间的交流,对话框就是人与电脑之间的对话。对话框用来输入数据,修改数据,修改应用设置等等。 输入文字 QInputDialog提供了一个简单方便的对话框,可以输入字符串,数字或列表。 #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial In this

  • 打开或保存文件,弹出警告等对话框 进程: 主进程​ 选择多个文件和目录的对话框: 1 const {dialog} = require('electron') 2 console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']})) Copied! 对话框默认是在主线程中

  • 显示用于打开和保存文件、警报等的本机系统对话框。 线程:主线程 显示用于选择多个文件和目录的对话框的示例: const { dialog } = require('electron') console.log(dialog.showOpenDialog({ properties: ['openFile', 'openDirectory', 'multiSelections'] })) 这个对话框是