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

jcrowson:

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

我想添加一些验证,以便如果他们输入的内容为空白或为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();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章