我有一个在for循环内的switch case语句中创建的AlertDialog。在AlertDialog上有一个用于输入的EditText。当弹出框时,for循环会在后台运行。我希望循环等到发送输入继续。下面是AlertDialog代码: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;
}
}
向我们展示整个代码。 for/switch语句。这听起来像你做错了。请注意,在显示AlertDialog之后调用alertdialog是异步 – Falmarri 2010-09-23 21:33:12
,代码将继续运行,并且不会“等待”,直到在AlertDialog上执行操作为止 – binnyb 2010-09-23 21:36:42
嗯,我已经发现AlertDialog不会暂停,直到驳回。我想知道如何让它暂停直到被解雇。 – Fsmv 2010-09-23 21:58:38