简单的编辑文字?

时间:2016-03-01 01:10:58

标签: java android arrays xml string

我从编辑文本中获取用户信息。我有一个听众,在点击提交后获取他们输入的信息,但是我想在点击后退或点击其他地方后获得输入的信息:

enter image description here

例如,如果用户点击黑色空格,我想获取他们输入的文本。 如果他们键入" hello",然后单击返回而不是"输入",我仍然希望得到文本问候。但是,如果他们没有输入任何内容,我就不在乎他们的意见。我怎样才能做到这一点?

谢谢,

Ruchir

3 个答案:

答案 0 :(得分:1)

首先将这些添加为类变量

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();
}

然后检查是否有任何值分配给您的String变量

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)侦听器并在调用key up动作时访问Edittext输入

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_UP) {
        if(!isEditTextHasFocus){
            inputText = yourEditText.getText().toString();
        }
    }
    return true;
}

我希望这会让您进一步了解找到您独特的解决方案。

答案 1 :(得分:0)

Save entered text in editText via button那可以是一个解决方案

答案 2 :(得分:0)

覆盖按下后退按钮时发生的情况是不好的做法,对于您想要做的事情是不必要的。

您需要使用名为onFocusChangedListener的特殊侦听器。只要元素获得或失去焦点,就会调用此函数。在这种情况下,只要有人点击它或离开,就会调用editText。按后退按钮或以任何方式离开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();
       }

      }

}

});