输入文本对话框 Android

新手上路,请多包涵

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

原文由 Luke Taylor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 822
2 个回答

听起来像是使用 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();

原文由 Aaron 发布,翻译遵循 CC BY-SA 3.0 许可协议

@Aron我用了你的例子,我得到了这个错误 java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

原文由 Filler 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题