当前位置: 首页 > 面试题库 >

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

欧阳俊逸
2023-03-14
问题内容

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

我想添加一些验证,以便如果他们输入的内容为空白或为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,因为似乎DialogInterface作为参数给出的onClick()并不能让您选择停止的关闭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对象的方法,您可以直接在其上调用方法。

这同样适用于ToastS:

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


 类似资料:
  • 我正在使用新的JavaFX Alert类(Java1.8_40),并尝试在exibition文本中使用HTML标记,但到目前为止还没有成功。下面是我正在尝试做的一个例子。 有没有人知道这是不是真的可能,给我举个例子? 提前道谢。

  • 我在antoher的项目中有完全相同的代码,但它在这里继续崩溃。我有。我真的不确定问题出在哪里。我尝试过切换gradle版本,从切换到。不管怎样,一切都失败了

  • 问题内容: 我有一个线程,每隔六秒钟将GPS坐标发送到数据库,并且有一个检查可以验证用户是否在定义的区域内。如果用户不在该位置内,则我需要一个警报对话框,通知他们它们不在范围内;如果用户在该区域内,我想要一个对话框,告诉他们它们在范围内。我的检查工作正常,但是我已经尝试过了,而且我很确定我不能在后台线程上添加对话框。我已经读过一些有关使用处理程序的信息,但是我不确定如何实现。如果您有任何建议,我将

  • 我最近将我的应用程序迁移到Material Design,我在警报对话框中偶然发现了这个问题: 我正在应用如下对话框样式:

  • 问题内容: 我有一个非常简单的selenium-webdriver脚本。我想使用webdriver进行HTTP身份验证。 脚本: 问题: 抛出 org.openqa.selenium.NoAlertPresentException:不存在警报 题: Webdriver是否仅找到警报对话框作为警报? 在不使用AutoIt或http:// username:password @somesite的情况下

  • 我有一个弹出下载音频指令在我的应用程序。我正在尝试做的是,我想改变默认的文本颜色“OK”为蓝色。我试了一些东西,但不起作用。下面是我的代码: 但这种改变并没有反映出,有谁能告诉我,我做错了什么?