我知道提出这个问题是如此愚蠢,但我甚至找不到以下问题的解决方法,我做了一切,因为它应该仍然不会在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
}
但每次我得到输入为空的日志而字符串没有存储值...我在这里找不到错误..我做错了什么?
答案 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
的字符串值。