EditText对话框输入始终为null(Android)

时间:2017-01-02 22:45:32

标签: android android-edittext android-dialog

以下代码在按钮的onClick方法中运行并显示一个对话框。我可以输入文本然后按ok,但我的String文件名(如Log.d中所示)始终为null。我不明白为什么。

如何在对话框中输入要保存的文本?

我的代码在一个活动(没有片段)中运行,而String filename和EditText输入都是类成员变量。

  // Get filename from user
    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setTitle("Enter filename");

    // EditText to get user input
    this.input = new EditText(this);
    dialog.setView(input);

    dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            filename = input.getText().toString();
        }
    });

    dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            // cancelled
        }
    });
    dialog.show();
    Log.d(LOG_TAG, "Filename is : " + filename);

我的代码基于android prompt user's input using a dialog,但我的问题不同。

1 个答案:

答案 0 :(得分:0)

您尝试在实际输入数据之前记录字符串。 尝试将日志放在正面的onClick中,我想你会看到它确实存在。

像这样:

// Get filename from user
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("Enter filename");

// EditText to get user input
this.input = new EditText(this);
dialog.setView(input);

dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        filename = input.getText().toString();
        Log.d(LOG_TAG, "Filename is : " + filename);
    }
});

dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
        // cancelled
    }
});
dialog.show();