我正在尝试向位于警报对话框中的编辑文本字段添加一些文本验证。它提示用户输入名称。
我想添加一些验证,这样如果他们输入的内容是空白或 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/