每当用户按BACK / HOME / RECENTS时,验证EditText输入

时间:2014-07-23 01:03:38

标签: android

我找不到这个问题的完整答案,所以我会在这里再说一遍。我有一个EditText,每次用户完成编辑时都需要验证。网上有很多答案依靠方法editText.setOnEditorActionListener()来检测用户按下Done。但是,此方法不会检测用户是否按下三个硬键(Back,Home和第三个)。我希望信任用户始终按Done,但这种可能性极小。请帮我解决这个问题;以及第三个按钮的名称。

编辑:如果没有到位验证,有没有办法恢复所做的所有更改?例如,每当用户按下BACK,HOME或RECENTS时,所有更改都将消失?

3 个答案:

答案 0 :(得分:0)

尝试在onDestroyonPause验证它。

当用户按HOME(BACK)时,将调用onPauseonDestroy)。所以你做那样的事情

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();                                 }`