gpt4 book ai didi

android - 无法在自行关闭的对话框中设置错误

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

如标题所示,我在 EditText mEditText 中设置错误时遇到问题。

 private AlertDialog.Builder buildDialog(String mailString)
{
final AlertDialog.Builder alertDialogBuilder =
new AlertDialog.Builder(LoginActivity.this);

alertDialogBuilder.setTitle("Insert mail");
alertDialogBuilder.setMessage("email");
// Set an EditText view to get user input
mMailEditText = new EditText(LoginActivity.this);
if (mailString != null)
mMailEditText.setText(mailString);
alertDialogBuilder.setView(mMailEditText);
alertDialogBuilder.setPositiveButton(
"Ok", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
String email = mMailEditText.getText().toString();
if (!TextUtils.isEmpty(email) && !isEmailValid(email))
{
mMailEditText.setError(getString(
R.string.activity_login_error_invalid_email));
}
else
{
attemptLoginOrRegister(UserTasks.REGISTER, email);
}
}
});
alertDialogBuilder.setNegativeButton(
"Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int whichButton)
{
dialog.cancel();
}
});

mAlertDialog = alertDialogBuilder.create();
return alertDialogBuilder;
}

private void setListeners()
{
mRegisterButton.setOnClickListener(
new View.OnClickListener()
{
@Override
public void onClick(View v)
{
buildDialog(null).show();
}
});
}

setListeners() 总是从 onCreate 调用,而 buildDialog 在用户点击注册按钮时调用。调试应用程序时,如果电子邮件无效,则包含 mMailEditText.setError() 的行会正确执行,但不会显示错误消息,对话框只会关闭。我的方法有什么问题?

编辑:如果需要,here是不需要任何外部库的类代码的简化版本。我还添加了 layoutstrings文件。

最佳答案

尽管您需要更改代码,但您选择了正确的方法。请看下面的代码:

   View view = getLayoutInflater().inflate(R.layout.custom_dialog, null);

final EditText editTextEmail = (EditText) view.findViewById(R.id.editCategory);

final AlertDialog alertDialog = new AlertDialog.Builder(LoginActivity.this)
.setView(view)
.setPositiveButton(R.string.str_ok, null)
.setNegativeButton(R.string.str_cancel, null)
.create();

alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {

Button buttonPositive = ((AlertDialog) dialog).getButton(DialogInterface.BUTTON_POSITIVE);
buttonPositive.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
// Do whatever you want when positive button is clicked
});

Button buttonNegative = ((AlertDialog) dialog).getButton(DialogInterface.BUTTON_NEGATIVE);
buttonNegative.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View view) {
// Do whatever you want when negative button is clicked
}
});
}
});

alertDialog.show();

创建一个 XML 布局,包括您想要的 EditText。在 View 中扩充布局并在 AlertDialog 实例的 setView 方法中传递该 View 。只需使用 AlertDialog 的实例覆盖 setOnShowListener。此后,如上所示取回正负按钮。就是这样。

关于android - 无法在自行关闭的对话框中设置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28189369/

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