String不存储从用户获取的edittext值

时间:2015-04-14 13:06:43

标签: android string android-fragments

我知道提出这个问题是如此愚蠢,但我甚至找不到以下问题的解决方法,我做了一切,因为它应该仍然不会在String name我存储字符串值我在EditText之一中实施fragments并将值存储在String中,但这些值不会存储在String中。据我所知,我已经做好了一切,但这件事根本不起作用。

onCreateView我正在执行此代码:

EditText av i= (EditText) v.findViewById(R.id.nameAndroid);
String name = avi.getText().toString();

我正在执行一项操作,检查用户是否输入了任何基于字符串的字符串,然后我将执行另一部分代码,使用以下代码对输入的String执行某些操作:< / p>

if(name.matches("")){
    Log.i(TAG, "input is empty");
} else{
    //code
}

每次我得到输入为空的日志而字符串没有存储值...我在这里找不到错误..我做错了什么?

3 个答案:

答案 0 :(得分:2)

在这里,您只需在检索后保存空的EditText。你必须在EditText上添加一个监听器,看看它何时被编辑。

使用TextWatcher:http://developer.android.com/reference/android/text/TextWatcher.html

avi.addTextChangedListener(new TextWatcher(){
  @Override
  public void afterTextChanged(Editable arg0) {
      name= avi.getText().toString();
  }
  @Override
  public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
  }
  @Override
  public void onTextChanged(CharSequence s, int a, int b, int c) {
  }
});

答案 1 :(得分:2)

在onCreateView中保存EditText的值还为时过早 - 它刚刚创建,用户甚至还没有看到它。

您有两种方式:

一个。如果您有一个按钮(用户输入数据并单击按钮),请在onClick方法中添加以下内容:

    Editable e = yourEditText.getText();
    String string = "";
    if (e != null) string = e.toString();

湾如果您没有按钮,可以添加TextWatcher

    yourEditText.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) {
       Editable e = yourEditText.getText();
       String string = "";
       if (e != null) string = e.toString();
    }

    @Override    
    public void beforeTextChanged(CharSequence s, int start,
     int count, int after) {
       }

    @Override    
    public void onTextChanged(CharSequence s, int start,
     int before, int count) {
    }
    });

请注意,您应该在用户输入后保存值 - 而onCreateView用户甚至还没有看到该视图。在 a 的情况下,用户单击该按钮 - 并验证他是否在该字段中输入了某些内容。在 b 的情况下,我们会在字段中观察更改,因此如果有要保存的内容,则只保存 值。

您可以在用户返回/更改屏幕时保存该值,例如在onPause。

答案 2 :(得分:1)

getText()的{​​{1}} <{1}}会在调用时为您提供EditText的内容,因此您必须在此“操作”发生时调用EditText,而不是在name= avi.getText().toString();中,或者只会存储当时onCreateView 的字符串值