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

Android 每当用户按BACK/HOME/RECENTS时验证EditText输入,android,Android,我找不到这个问题的完整答案,所以我再把它放在这里。我有一个EditText,每次用户完成编辑时都需要验证。很多在线答案都依赖于editText.setOnEditorActionListener方法来检测用户是否按了Done键。但是,此方法无法检测用户是否按了三个硬键Back、Home和第三个。我想相信用户总是按“完成”,但这是极不可能的。请帮我解决这个问题;还有第三个按钮的名称 编辑:如果没有验证,是否有方法恢复所有更改?例如,每当用户按BACK、HOME或RECENTS时,所有更改都将消失?

我找不到这个问题的完整答案,所以我再把它放在这里。我有一个EditText,每次用户完成编辑时都需要验证。很多在线答案都依赖于editText.setOnEditorActionListener方法来检测用户是否按了Done键。但是,此方法无法检测用户是否按了三个硬键Back、Home和第三个。我想相信用户总是按“完成”,但这是极不可能的。请帮我解决这个问题;还有第三个按钮的名称

编辑:如果没有验证,是否有方法恢复所有更改?例如,每当用户按BACK、HOME或RECENTS时,所有更改都将消失?

尝试在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.
}
试试这样的方法:

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

    }

这是你完成任务的方式。你可以很容易地验证你所有的编辑文本。里面的按钮你必须使用这个

字符串grpn=edittext1.getText.toString; String star=edittext2.getText.toString; 字符串en=edittext13.getText.toString; 如果grph.equalsIgnoreCaseSelect {e`

Toast.makeTextgetApplicationContext,请设置组号Toast.LENGTH\u LONG.show;
}`

为什么您要尝试验证用户最近正在销毁或移动到后台主目录的EditText?例如,默认情况下,“我的EditText”的值为50。它需要在任何时候都有一个值当我导航到父视图时,值EditText将被取回。用户可以通过删除EditText中的值,然后按后退按钮进行欺骗。setOnEditorActionListener不会触发,EditText字段保持为空。这有意义吗?如果这个问题太棘手,那么有没有办法让他们真的破坏他们的编辑?例如,每当用户点击“后退”、“主页”或“最近”,所有更改都将恢复到原始状态。因为您处理用户离开活动的地方,您可以使用此方法验证您的文本视图,以防用户按“主页”或“后退”键。这有意义吗?-不完全是。你能解释一下为什么这回答了OP的问题吗?
else if(star.equalsIgnoreCase(""))
{   Toast.makeText(getApplicationContext(), "Set the date", Toast.LENGTH_LONG).show();

}                   
else if(en.equalsIgnoreCase(""))
 {