Java 简单编辑文本?
我从编辑文本中获取用户信息。我确实有一个侦听器在单击“提交”后获取其输入的信息,但我也希望在单击“上一步”或单击其他位置后获取输入的信息: 例如,如果用户单击黑色空间,我希望获得他们输入的文本如果他们键入“hello”,然后单击“上一步”而不是“回车”,我仍然希望得到文本hello。但是,如果他们不键入任何内容,我就不关心他们的输入。我如何才能做到这一点 谢谢Java 简单编辑文本?,java,android,arrays,xml,string,Java,Android,Arrays,Xml,String,我从编辑文本中获取用户信息。我确实有一个侦听器在单击“提交”后获取其输入的信息,但我也希望在单击“上一步”或单击其他位置后获取输入的信息: 例如,如果用户单击黑色空间,我希望获得他们输入的文本如果他们键入“hello”,然后单击“上一步”而不是“回车”,我仍然希望得到文本hello。但是,如果他们不键入任何内容,我就不关心他们的输入。我如何才能做到这一点 谢谢 Ruchir首先将这些作为类变量添加 private String inputText; private EditText yourE
Ruchir首先将这些作为类变量添加
private String inputText;
private EditText yourEditText;
获取EditText视图的实例
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();
}
如果用户按下“后退”按钮,您可以获得类似这样的输入
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事件)
listener,并在调用key up操作时访问Edittext输入
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
if(!isEditTextHasFocus){
inputText = yourEditText.getText().toString();
}
}
return true;
}
我希望这将为您找到独特的解决方案提供进一步的想法。覆盖按下“后退”按钮时发生的情况是一种不好的做法,对于您想要做的事情来说是不必要的 您需要使用一个名为onFocusChangedListener的特殊侦听器。只要元素获得或失去焦点,就会调用此函数。在本例中,对于editText,每当有人单击它或离开它时,就会调用它。按后退按钮或以任何方式保留编辑文本将调用此函数。在下面的代码中,我检查
if(!username.hasFocus())
这使得该值仅在editText中的焦点丢失时保存,而不是每次焦点更改时保存
您还没有添加任何自己的代码,所以我将在代码示例中使用明显的占位符变量
Edittext username = (EditText findViewById(R.id.YOUR_EDITTEXTS_ID);
String previousValue = ""; // to keep track of value change
String usernameValue = "";
username.setOnFocusChangeListener(new View.OnFocusChangeListener(
{
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (username.hasFocus()){
//take note of value for comparison when clicking away
previousValue = username.getText().toString();
} else if (!username.hasFocus()){
// check if value has changed
if (!previousValue.equals(username.getText().toString()){
usernameValue = username.getText().toString();
}
}
}
});
但如果用户不小心点击了编辑文本,该怎么办呢。我需要确保文本已更改。我的代码已更新,以检查文本是否已更改。请在onPause期间检查EditText.getText()。。