gpt4 book ai didi

Android - Activity 如何从对话框中获取用户输入的文本

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:02 28 4
gpt4 key购买 nike

我认为这会很容易,但它让我望而却步。我有一个显示自定义对话框的 Activity ,允许用户输入一些文本,然后定义确定和取消按钮。我使用 show() 显示它。但我不知道如何从对话框中取回值。

我正在使用自定义对话框,因为它会对文本输入进行一些验证。我想我可以将其更改为从 Activity 派生,然后使用 startActivityForResult 显示它,但是 - 至少基于我以前的 Windows 编程时代 - 我认为从 Android 对话框中获取用户输入的值会很容易。

我是否忽略了某种类型的回调或监听器机制?

我什至尝试将其作为一个简单的解决方案,但它不允许我分配值 (1),除非它的修饰符设置为 final,然后 (2) 如果我说可以将其设为 final,则不会让我分配给这是因为“无法分配最终的局部变量值,因为它是在封闭类型中定义的”

    String value;

final EditText input = (EditText)findViewById(R.id.theText);

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
value = input.getText().toString();
dialog.dismiss();
}
});
builder.show();

[为解决方案更新编辑]============================

我最后做的主要事情是添加将处理程序传递给对话框的功能。在我添加的对话框类中:

   private Handler clientHandler = null;

public void AddHandler(Handler client)
{
this.clientHandler = client;
}

并更新了 Dialog 的 OK 按钮点击:

   /**
* The user pressed the OK button
* @param v
*/
public void okClick(View v)
{
// save the entered string
this.tag = this.tagEditText.getText().toString();

if ( null != this.clientHandler )
{
// Notify the client to update itself
this.clientHandler.sendMessage( clientHandler.obtainMessage());
}

cancel();
}

然后在显示我添加的对话框的 Activity 的 onCreate() 中:

 tagDialog = new tagDialog(this); 

tagHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
tag = tagDialog.tag;
}
};

tagDialog.AddHandler(tagHandler);

最佳答案

DialogonClickListener 中保存您想保存的内容。使用 dialog.findViewById() 找到您的文本框,将文本保存在某处(或使用 Handler),然后在 Activity 中检索保存的文本。

关于Android - Activity 如何从对话框中获取用户输入的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4400846/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com