小编典典

输入文本对话框 Android

all

当用户Button在我的应用程序中单击 a (打印在 a 中SurfaceView)时,我希望Dialog出现一个文本,并且我希望将结果存储在
a 中String。我希望文本Dialog覆盖当前屏幕。我怎样才能做到这一点?


阅读 215

收藏
2022-04-07

共1个答案

小编典典

听起来像是使用AlertDialog的好机会。

看起来很基本,Android 没有内置对话框来执行此操作(据我所知)。幸运的是,这只是在创建标准 AlertDialog 之上的一点额外工作。您只需创建一个
EditText 供用户输入数据,并将其设置为 AlertDialog
的视图。如果需要,您可以使用setInputType自定义允许的输入类型。

如果您能够使用成员变量,您可以简单地将变量设置为 EditText
的值,并且在对话框关闭后它将保持不变。如果不能使用成员变量,则可能需要使用侦听器将字符串值发送到正确的位置。(如果这是您需要的,我可以编辑和详细说明)。

在你的班级内:

private String m_Text = "";

在按钮的 OnClickListener 中(或从那里调用的函数中):

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title");

// Set up the input
final EditText input = new EditText(this);
// Specify the type of input expected; this, for example, sets the input as a password, and will mask the text
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
builder.setView(input);

// Set up the buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    @Override
    public void onClick(DialogInterface dialog, int which) {
        m_Text = input.getText().toString();
    }
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
    }
});

builder.show();
2022-04-07