我正在尝试向位于警告对话框内的编辑文本字段添加一些文本验证。它提示用户输入名称。
我想添加一些验证,以便如果他们输入的内容为空白或为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
对象的方法,您可以直接在其上调用方法。
这同样适用于Toast
S:
Toast.makeText(this, "Please enter...", Toast.LENGTH_LONG).show();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句