gpt4 book ai didi

android - 带有 EditText 的 AlertDialog 的更好解决方案

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:00 27 4
gpt4 key购买 nike

我想要一个带有 EditText 字段的 AlertDialog 来接受输入。这本身非常简单。但是,我希望有一些“明显”的特性是这个请求的结果。我会一个接一个地处理它们。我正在寻找对这些事情有更简单解决方案的人。我猜解决方案是,“你这个懒惰的流浪汉,写你自己的自定义对话框。”

AlertDialog 带有 EditText

final EditText input = new EditText(context);
final AlertDialog dlg = new AlertDialog.Builder(this).
setTitle("Title").
setView(input).
setCancelable(false).
setPositiveButton(android.R.string.ok, new OnClickListener()
{
@Override
public void onClick(final DialogInterface dialog, final int which)
{
/* Handle ok clicked */
dialog.dismiss();
}
}).
setNegativeButton(android.R.string.cancel, new OnClickListener()
{
@Override
public void onClick(final DialogInterface dialog, final int which)
{
/* Handle cancel clicked */
dialog.dismiss();
}
}).create();
dlg.show();

是的,效果很好。如果该输入字段立即获得焦点(并显示键盘)肯定会很好,对吧?

AlertDialog 具有焦点 EditText以下代码将在 create() 之后和 dlg.show()

之前
/** This requires API Level 8 or greater. */
dlg.setOnShowListener(new OnShowListener()
{
@Override
public void onShow(final DialogInterface dialog)
{
input.requestFocus();
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(input, 0);
}
});

干得好……我想。现在我有了这个重点输入,如果它尊重输入 IME 选项就好了......

AlertDialog 带有焦点 EditText 和自定义 IME 选项

input.setImeOptions(EditorInfo.IME_ACTION_DONE);
input.setOnEditorActionListener(new OnEditorActionListener()
{
@Override
public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event)
{
/** Same code here that goes in the dialog.setPositiveButton OnClickListener */
dlg.dismiss();
return true;
}
});

现在这确实不是一个很好的解决方案(重复代码),但它确实有效...

人们是否有更好的方法来解决这个问题,或者在对话中向用户询问一小段信息真的很少见,还是我只是一个赢家,应该去写我自己的对话?

最佳答案

根据对 OP 的评论:

您不必在 OnEditorActionListener 中有这样的重复代码。您可以告诉操作系统在激活时单击“确定”按钮,而不是重复代码。

像这样:

public boolean onEditorAction(final TextView v, final int actionId, final KeyEvent event) {
dlg.getButton(DialogInterface.BUTTON_POSITIVE).performClick(); // Click OK button
return true;
}

总的来说,我认为您采用了正确的方法 (documentation about collecting information through dialogs)。正如我在评论中提到的,操作系统使用带有 EditTextAlertDialog 来添加词典单词(到用户词典),因此这是操作系统中的预期功能。

关于android - 带有 EditText 的 AlertDialog 的更好解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289267/

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