如何测试Android EditText的内容

时间:2015-04-16 01:08:13

标签: android android-edittext back keyevent

用户按下设备上的“后退”按钮后,我希望测试EditText的内容。

如果EditText没有内容(用户从未输入任何内容,或者他们输入了一些输入,然后通过退格将其全部删除),那么请返回上一个活动(屏幕)。

否则,EditText有内容,因此触发alertDialog以查看是否要" Discard" EditText输入并返回上一个活动(屏幕),

或"取消" AlertDialog返回EditText并更改/添加到现有输入。

我按下后退按钮的代码可以正常工作以返回上一个活动(下面的部分列表):

public boolean onKeyPreIme ( int keyCode, @NonNull KeyEvent event){
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        // the key has been pressed down
        if (event.getAction() == KeyEvent.ACTION_DOWN
                && event.getRepeatCount() == 0) {    

我正在寻找有关如何将该代码与EditText内容测试的if / then逻辑相关联的帮助。我开始时:

final EditText todoEditText = (EditText) findViewById(R.id.CEditText);
    int sTodo = todoEditText.getText().toString().trim().length();
        if (sTodo == 0) {
            run code to hide the keyboard and go to the previous activity
        }
        else {
            run code to show the alertDialog
        }

2 个答案:

答案 0 :(得分:0)

嗯...为什么不将数据传递给String并检查字符串是否为空?

String strTodo = todoEditText.getText().toString().trim();
if (!strTodo.isEmpty() && !strTodo.equalsIgnoreCase("")) {
   // run code to hide the keyboard and go to the previous activity
} else {
   // run code to show the alertDialog
} 

我所解释的更重要的问题是你如何在活动之间处理数据。相反,使用Intents和Extras将数据从一个Activity传递到另一个Activity。将您的editText数据传递给字符串,就像我之前在下一个Activity的Extras中提到的那样,并在下一个Activity中使用该数据来确定流程。不要在堆栈上保留一个Activity,以便您可以返回它并开始使用已存在的数据,这是一个坏主意。但是,如果这是您想要做的,请利用Android的生命周期,并在返回onResume()中的上一个Activity时进行editText检查。

最后,听起来你可能也需要一个听众。如果你这样做,就在这里。

todoEditText.addTextChangedListener(new TextWatcher() {

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
                                  int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before,
                              int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {

    }

});

答案 1 :(得分:0)

如果您将返回上一个活动,可以在onStop或onDestroy中处理该功能。 然后,您可以检查EditText内容是否为空。

String tmp = mEditText.getText().toString.trim();
if (null != tmp && !("").equals(tmp)) {
   //code
} else {
   //code
}