这是我的第一个问题。 我正在创建一个对话框,在游戏菜单中输入玩家名称,但是想要限制可能的字符(只有字母和数字,如果不可能,至少排除返回),并且如果字段是,则阻止按下确定按钮空的,但我无法弄清楚如何做到这一点。还有一种方法可以在返回ok时设置默认操作吗?我知道许多应用程序利用它来加快输入速度。这就是我所拥有的:
public String tmPlayerName;
...
public void playerDialog() {
dialogOpen = true;
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Change player");
alert.setMessage("Enter player name (cannot be empty)");
final EditText input = new EditText(this);
input.setText(tmPlayerName);
input.
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
tmPlayerName = input.getText().toString();
}
}
});
alert.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.show();
}
编辑:该应用程序是使用Android 4.0构建的,如果有任何帮助,则使用Google Play服务。
答案 0 :(得分:0)
您可以使用正则表达式与文本输入进行比较:
String reg = "^[a-zA-Z0-9]*$";
final AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Change player");
alert.setMessage("Enter player name (cannot be empty)");
final EditText input = new EditText(this);
input.setText("test");
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String tmPlayerName = input.getText().toString();
if(tmPlayerName.matches(reg)&&!tmPlayerName.isEmpty()){
Log.i("ALERT","Store username -"+tmPlayerName);
}else{
Toast.makeText(MainActivity.this, "Please put valid username", Toast.LENGTH_LONG).show();
}
}
});
alert.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.create().show();
如果要使OK按钮在空时禁用...我的建议是使用自定义对话框。试试这个例子 - http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application