如何测试Android EditTex的内容

如何测试Android EditTex的内容,android,android-edittext,back,keyevent,Android,Android Edittext,Back,Keyevent,用户按下设备上的“后退”按钮后,我将测试EditText的内容 如果EditText没有内容(用户从未键入任何内容,或者他们键入了一些输入,然后通过退格将其全部删除),则返回到上一个活动(屏幕) 否则,EditText会有内容,因此会触发一个alertDialog,查看是否要“放弃”EditText输入并返回到上一个活动(屏幕) 或“取消”AlertDialog以返回编辑文本并更改/添加现有输入 我拥有的返回按钮的代码可以很好地返回到上一个活动(下面部分列出): 我正在寻找有关如何将该代码与Ed

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

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

否则,EditText会有内容,因此会触发一个alertDialog,查看是否要“放弃”EditText输入并返回到上一个活动(屏幕)

或“取消”AlertDialog以返回编辑文本并更改/添加现有输入

我拥有的返回按钮的代码可以很好地返回到上一个活动(下面部分列出):

我正在寻找有关如何将该代码与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
        }

嗯…为什么不将数据传递给字符串,然后检查字符串是否为空

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
} 
我对您所解释的更大的问题是如何在活动之间处理数据。相反,使用意图和额外信息将数据从一个活动传递到另一个活动。将editText数据传递给字符串,正如我在“下一个活动的附加内容”中提到的,并在下一个活动中使用该数据来确定流。不要将某个活动保留在堆栈上,以便您可以返回到它并开始使用已经存在的数据,这是一个坏主意。但如果这是您想要做的,请利用Android的生命周期,并在返回到onResume()中的上一个活动时进行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) {

    }

});

可以在onStop或onDestroy中处理该函数,如果返回到上一个活动,则效果会更好。 然后可以检查EditText内容是否为空

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

是的,我看到了listener TextWatcher代码,不想在代码上、之前和之后使用。不过,对于您的答案,执行EditText内容测试的最初驱动程序是用户按下了后退按钮,而不是他们键入了EditText的输入。想法?首先,为什么要在后台的活动中保存数据?您将遇到比试图确定文本是否仍在editText视图中更多的问题(内存问题)。其次,如果你真的想这样做,在onResume中检查我上面发布的编辑文本,然后在这里做你想做的事。如果EditText中没有输入数据,则我希望将用户返回到上一个活动(屏幕)。你是说我需要在将用户返回到上一个活动之前使用finish()销毁当前活动以避免内存泄漏吗?我是说将数据与附加程序一起传递,然后使用附加程序中的数据来确定是否要定向到哪里。这比显示一个只检查以前输入的数据然后转换到另一个活动的活动要好得多。我会更新我的答案以进一步解释。我需要更清楚。第一个活动是欢迎屏幕。用户单击菜单项&意图启动第二个活动。然后,用户可以在作为屏幕视图一部分的EditText行上键入输入。我正在寻找字符串代码来测试EditText行。如果字符串>0是因为用户在EditText行中键入了一些数据&然后他们按Back键,我想显示一个AlertDialog。如果字符串=0,因为EditText行是空的&然后用户按下后退键,我想关闭软键盘并返回上一个(欢迎屏幕)。
String tmp = mEditText.getText().toString.trim();
if (null != tmp && !("").equals(tmp)) {
   //code
} else {
   //code
}