Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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_Input_Dialog_Control Flow - Fatal编程技术网

Android 如何实现一系列文本输入对话框?

Android 如何实现一系列文本输入对话框?,android,input,dialog,control-flow,Android,Input,Dialog,Control Flow,我正在创建一个android应用程序,我想有一个功能,创建两个文本输入对话框一个接一个,然后执行基于值的操作。由于android中的所有操作都是异步完成的,因此我提出了以下方法: private void doOperation() { final EditText input = new EditText(this); showInput("Title", "Enter param1:", input, new DialogInterface.OnClickListener()

我正在创建一个android应用程序,我想有一个功能,创建两个文本输入对话框一个接一个,然后执行基于值的操作。由于android中的所有操作都是异步完成的,因此我提出了以下方法:

private void doOperation() {
    final EditText input = new EditText(this);
    showInput("Title", "Enter param1:", input, new DialogInterface.OnClickListener() {  
        public void onClick(DialogInterface dialog, int whichButton) {
            doOperation2(input.getText().toString());
        }
    });
}

private void doOperation2(String param1) {
    if(/* Some condition on param1. */)
        return;
    final EditText input = new EditText(this);
    showInput("Title", "Enter param2:", input, new DialogInterface.OnClickListener() {  
        public void onClick(DialogInterface dialog, int whichButton) {
            doOperation3(param1, input.getText().toString());
        }
    });
}

private void doOperation3(String param1, String param2) {
    actuallyDoOperation();
}

private void showInput(String title, String message, final EditText input, DialogInterface.OnClickListener positiveActionListener) {
    AlertDialog alert = new AlertDialog.Builder(this).create();
    alert.setTitle(title);
    alert.setMessage(message);
    input.setInputType(InputType.TYPE_CLASS_TEXT);
    alert.setView(input);
    alert.setButton(AlertDialog.BUTTON_POSITIVE, getString(R.string.ok), positiveActionListener);
    alert.setButton(AlertDialog.BUTTON_NEGATIVE, getString(R.string.cancel), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
        }
    });

    alert.show();
}

这看起来有点混乱,有更好/更好/更干净/更正确的方法吗?

为什么需要使用两个对话框
doOperation2(…)
实际上不会根据
doOperation1(…)
的返回值有条件地执行任何操作。为什么不在一个对话框中同时显示两个
TextView
s?对不起,我遗漏了不完全相关的代码,它们已经更新。我在显示第二个对话框之前检查第一个参数。