我想从EditText中读取一个String。这个String是一个#标签,应该以#开头。所以我想在用户输入后检查String的第一个char。如果字符串未通过检查,我想给出一个简单的警报并将焦点再次放在输入上,这样用户就可以再次尝试输入。
我该如何实现?
答案 0 :(得分:1)
你可以通过获取ist字符串上下文来检查编辑文本... 这可以通过调用方法getText来完成,并从字符串结果验证开头的char(索引0)
EditText myInput =....
if(myInput.getText().charAt(0) !='#'){
//modal dialog and/ or toast!
} else {
// ok
}
答案 1 :(得分:0)
我找到了解决问题的方法。起初我写了一个方法,它检查String的第一个char,如果第一个char不等于,则发出一个Alert,并返回一个布尔值。
public boolean checkFirstChar (String s, char c) {
boolean isConform = false;
if (s.charAt(0) != c ) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(SettingsActivity.this);
// set title
alertDialogBuilder.setTitle("Input not conform!");
// set dialog message
alertDialogBuilder
.setMessage("Your hashtag should start with " + c)
.setCancelable(false)
.setNegativeButton("OK",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, just close
// the dialog box and do nothing
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
} else {
isConform = true;
}
return isConform;
}
然后我做一个OK按钮。在Button上我实现了一个OnClicklistener。 OnClick我从EditText获取String。然后我将String放入Method中以检查第一个char。如果Method返回true,我保存了Settings并启动了下一个Activity。如果没有,我就回到了EditText Focus。
//set onClickListener on OK Button
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get selected Item from Spinner HashTag Item
strgHashtag = spinner_hashtag.getSelectedItem().toString();
//get String form EditText addHashTag
strgAddHashtag = edit_addHashTag.getText().toString();
//check if the first char == #
if (checkFirstChar(strgAddHashtag, '#') == true ) {
//if true, add String to HashTagItem List
spinner_HashTagItems.add(strgAddHashtag);
//save settings into a JSON File on SD-Card
saveSettings();
//and put the hashTagString into an IntenExtra for the HomeActivity
Intent intent = new Intent(SettingsActivity.this, HomeActivity.class);
intent.putExtra("hashTag", strgHashtag);
startActivity(intent);
finish();
//if the char != '#'
} else {
//return to the user input
edit_addHashTag.requestFocus();
}
}
});
我希望此代码可以帮助其他社区成员解决同样的问题。