用户按下设备上的“后退”按钮后,我希望测试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
}
答案 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
}