Android AlertDialog不等待输入

Android AlertDialog不等待输入,android,Android,我在for循环中的switch case语句中创建了一个AlertDialog。在AlertDialog上有一个用于输入的EditText。当框弹出时,for循环在后台运行。我希望循环等待输入发送后继续。以下是AlertDialog的代码: for(int i=0; i < code.length(); i++){ switch(code.charAt(i)){ case '+': bytes[inde

我在for循环中的switch case语句中创建了一个AlertDialog。在AlertDialog上有一个用于输入的EditText。当框弹出时,for循环在后台运行。我希望循环等待输入发送后继续。以下是AlertDialog的代码:

for(int i=0; i < code.length(); i++){
        switch(code.charAt(i)){
                case '+':
                    bytes[index]++;
                    break;
                case '-':
                    bytes[index]--;
                    break;
                case '<':
                    if(index > 0){
                        index--;
                    }else{
                        Toast.makeText(this, "Warning: Index is already at zero", Toast.LENGTH_LONG).show();
                    }
                    break;
                case '>':
                    if(index <= 500){
                        index++;
                    }else{
                        Toast.makeText(this, "Warning: Maximum bytes reached", Toast.LENGTH_LONG).show();
                    }
                    break;
                case ']':
                    if(loop == -1){
                        Toast.makeText(this, "ERROR: Close bracket before an open bracket!", Toast.LENGTH_LONG).show();
                        errors++;
                        break;
                    }else{
                        if(bytes[index] == 0){
                            loop = -1;
                        }else{
                            i = loop;
                        }
                        break;
                    }
                case '[':
                    loop = i;
                    break;
                case '.':
                    stdout(Character.toString((char)bytes[index]));
                    break;
                case ',':
                    AlertDialog.Builder alert = new AlertDialog.Builder(this).setCancelable(false);

                    alert.setTitle("Enter Character");
                    alert.setMessage("Script is requesting input");

                    final EditText input = new EditText(this);
                    InputFilter[] FilterArray = new InputFilter[1];
                    FilterArray[0] = new InputFilter.LengthFilter(1);
                    input.setFilters(FilterArray);

                    alert.setView(input);

                    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            setByte(input.getText().toString().charAt(0));
                        }
                   });

                   alert.show();
                   break;
                }
                if(errors > 0){
                    break;
                }
            }

正如其他人所说,Android对话框不是模态的,也就是说,它们不会阻止后台进程。阅读我的教程,了解如何通过注册回调来解决此问题。

正如其他人所说,Android对话框不是模态的,也就是说,它们不会阻止后台进程。阅读我的教程,了解如何通过注册回调来解决此问题。

向我们展示整个代码。for/switch语句。听起来你做得很不对。请注意,调用alertdialog是异步的。显示alertdialog后,代码将继续运行,不会等到在alertdialog上执行了某个操作。我发现alertdialog不会暂停,直到被解除。我想知道如何让它暂停直到被解除。向我们展示整个代码。for/switch语句。听起来你做得很不对。请注意,调用alertdialog是异步的。显示alertdialog后,代码将继续运行,不会等到在alertdialog上执行了某个操作。我发现alertdialog不会暂停,直到被解除。我想知道如何让它暂停直到被解雇。这不完全是我需要的,但它让我思考,我想我可以用类似的方法想出一个解决方案。我将尝试计算大部分,然后等到调用侦听器后再打印结果。谢谢你的博客文章。这表明你不能暂停程序以及为什么。因此,我选择了一种不同的方法,它现在起作用了!很好-你选择的方法是什么?不完全是我需要的,但它让我思考,我想我可以用类似的方法想出一个解决方案。我将尝试计算大部分,然后等到调用侦听器后再打印结果。谢谢你的博客文章。这表明你不能暂停程序以及为什么。因此,我选择了一种不同的方法,它现在起作用了!非常好-您选择的方法是什么?