我找不到这个问题的完整答案,所以我会在这里再说一遍。我有一个EditText,每次用户完成编辑时都需要验证。网上有很多答案依靠方法editText.setOnEditorActionListener()
来检测用户按下Done
。但是,此方法不会检测用户是否按下三个硬键(Back,Home和第三个)。我希望信任用户始终按Done
,但这种可能性极小。请帮我解决这个问题;以及第三个按钮的名称。
编辑:如果没有到位验证,有没有办法恢复所做的所有更改?例如,每当用户按下BACK,HOME或RECENTS时,所有更改都将消失?
答案 0 :(得分:0)
尝试在onDestroy
和onPause
验证它。
当用户按HOME(BACK)时,将调用onPause
(onDestroy
)。所以你做那样的事情
String text = myEditText.getText().toString();
if (text.equals("")) {
// The EditText is empty. Do nothing.
} else {
// Make the changes here.
}
答案 1 :(得分:0)
尝试一下这样:
String finalText;
tv = (TextView)findViewById(R.id.charCounts);
textMessage = (EditText)findViewById(R.id.textMessage);
textMessage.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
finalText= tv.getText().toString();
}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){}
});
public boolean methodOfValidation(String finalText){
if ( finalText.equals("myCorrectText") )
return true;
else
return false;
}
@Override
public void onDestroy()
{
super.onDestroy();
if(!methodOfValidation(finalText))
Toast.makeText(getApplicationContext(),"ERROR ERROR", toast.LENGTH_SHORT).show();
else
finish();
}
答案 2 :(得分:0)
这是你跟随你的任务的方式。你将轻松验证你所有的editText。内部按钮你必须使用它。
String grpn=edittext1.getText().toString();
String star=edittext2.getText().toString();
String en=edittext13.getText().toString();if( grph.equalsIgnoreCase("Select")) {
e`
else if(star.equalsIgnoreCase(""))
{ Toast.makeText(getApplicationContext(), "Set the date", Toast.LENGTH_LONG).show();
}
else if(en.equalsIgnoreCase(""))
{
Toast.makeText(getApplicationContext(),“请设置组号”,Toast.LENGTH_LONG)。show(); }`