java - 警告对话框中 EditText 框的空验证 - Android

标签 java android validation alert

我正在尝试向位于警报对话框中的编辑文本字段添加一些文本验证。它提示用户输入名称。

我想添加一些验证,这样如果他们输入的内容是空白或 null,除了创建 Toast 语句错误之外,它不会做任何事情。

到目前为止我有:

    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setTitle("Record New Track");
    alert.setMessage("Please Name Your Track:");
    // Set an EditText view to get user input
    final EditText trackName = new EditText(this);
    alert.setView(trackName);
    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {

            String textString = trackName.getText().toString(); // Converts the value of getText to a string.
            if (textString != null && textString.trim().length() ==0)
            {   

                Context context = getApplicationContext();
                CharSequence error = "Please enter a track name" + textString;
                int duration = Toast.LENGTH_LONG;

                Toast toast = Toast.makeText(context, error, duration);
                toast.show();


            }
            else 
            {

                SQLiteDatabase db = waypoints.getWritableDatabase();
                ContentValues trackvalues = new ContentValues();
                trackvalues.put(TRACK_NAME, textString);
                trackvalues.put(TRACK_START_TIME,tracktimeidentifier );
                insertid=db.insertOrThrow(TRACK_TABLE_NAME, null, trackvalues);

            }

但这只是关闭警报对话框,然后显示 Toast。我希望警报对话框仍显示在屏幕上。

谢谢

最佳答案

我认为您应该重新创建 Dialog,因为在 onClick() 中作为参数给出的 DialogInterface 似乎没有给您停止关闭 Dialog 的选项。

我也有一些提示给你:

尝试使用 Activity.onCreateDialog()Activity.onPrepareDialog(),当然还有 Activity.showDialog()。它们使对话框的使用更容易(至少对我而言),而且对话框的使用看起来更像菜单的使用。使用这些方法,您还可以更轻松地再次显示对话框。

我想给你一个提示。这不是您问题的答案,但在答案中这样做更具可读性。

您可以简单地执行以下操作,而不是持有对 AlertDialog.Builder() 对象的引用:

new AlertDialog.Builder(this)
.setTitle("Record New Track")
.setMessage("Please Name Your Track:")
//and some more method calls
.create();
//or .show();

为您节省了引用资料和大量的输入工作;)。 (几乎?)AlertDialog.Builder 的所有方法都返回一个 AlertDialog.Builder 对象,您可以直接调用该对象的方法。

Toast 也是如此:

Toast.makeText(this, "Please enter...", Toast.LENGTH_LONG).show();

关于java - 警告对话框中 EditText 框的空验证 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2580606/

相关文章:

angular - 将字符串转换为 typescript 中的对象?

javascript - 语义 UI 正则表达式解析器似乎无法正常工作

validation - 在 blazor razor 页面中使用 editform 时如何重置自定义验证错误

java - 最佳批量照片上传小程序

java - 在Restured Automation中下载ZIP文件

java - 重用的访问者应该是静态的吗?

Android Studio 测试文件夹未出现在单元测试 Artifact 中

java - 通过谓词划分集合的库方法

java - Runtime.exec 和 Android 的问题

android - 在服务器端处理 JSON