Java 简单编辑文本?

Java 简单编辑文本?,java,android,arrays,xml,string,Java,Android,Arrays,Xml,String,我从编辑文本中获取用户信息。我确实有一个侦听器在单击“提交”后获取其输入的信息,但我也希望在单击“上一步”或单击其他位置后获取输入的信息: 例如,如果用户单击黑色空间,我希望获得他们输入的文本如果他们键入“hello”,然后单击“上一步”而不是“回车”,我仍然希望得到文本hello。但是,如果他们不键入任何内容,我就不关心他们的输入。我如何才能做到这一点 谢谢 Ruchir首先将这些作为类变量添加 private String inputText; private EditText yourE

我从编辑文本中获取用户信息。我确实有一个侦听器在单击“提交”后获取其输入的信息,但我也希望在单击“上一步”或单击其他位置后获取输入的信息:

例如,如果用户单击黑色空间,我希望获得他们输入的文本如果他们键入“hello”,然后单击“上一步”而不是“回车”,我仍然希望得到文本hello。但是,如果他们不键入任何内容,我就不关心他们的输入。我如何才能做到这一点

谢谢


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()。。