我正在从编辑文本中获取用户信息。我确实有一个监听器在单击提交后获取他们输入的信息,但我还想在单击返回或单击其他地方后获取输入的信息:
例如,如果用户点击了空白处,我想获取他们输入的文本。 如果他们键入“hello”,然后单击返回而不是“enter”,我仍然希望收到文本 hello。但是,如果他们不输入任何内容,我就不会关心他们的输入。我怎样才能做到这一点?
谢谢,
鲁契尔
最佳答案
首先将这些添加为类变量
private String inputText;
private EditText yourEditText;
获取 EditText View 的实例
yourEditText = (EditText)findViewById(R.id.your_editText);
点击按钮时,可以这样获取EditText字段的内容
Button mButton = (Button)findViewById(R.id.m_button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
inputText = yourEditText.getText().toString();
}
});
如果用户按下后退按钮,您可以获得这样的输入
@Override
public void onBackPressed() {
inputText = yourEditText.getText().toString();
super.onBackPressed();
}
然后检查是否有任何值分配给您的字符串变量
if(inputText.equals("") || inputText == null){
// there is no value
}else{
// there is value entered.
}
扩展我的解决方案以点击其他地方
添加类变量
private boolean isEditTextHasFocus;
然后创建一个焦点监听器,它将检查 Edittext 是否具有焦点
private View.OnFocusChangeListener focusListener = new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus){
isEditTextHasFocus = true;
} else {
isEditTextHasFocus = false;
}
}
}
在 onCreate(Bundle savedInstanceState)
方法中添加这一行
yourEditText.setOnFocusChangeListener(focusListener);
然后覆盖到 onTouchEvent(MotionEvent event)
监听器并在调用按键 Action 时访问 Edittext 输入
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
if(!isEditTextHasFocus){
inputText = yourEditText.getText().toString();
}
}
return true;
}
我希望这能给你一个进一步的想法,找到你独特的解决方案。
关于java - 简单的编辑文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35712900/