我想从 editText 获取字符串值,因此我使用 TextWatcher onTextChanged 方法在我的私有字符串cName上设置字符串值即可。它设定并获得正确的价值。
@TargetApi(11)
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup parent, Bundle savedInstanceState){
View v = inflater.inflate(R.layout.fragment_add,parent,false);
dNameText = (EditText) v.findViewById(R.id.d_name);
dNameText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
dCloud.setName(s.toString());
Log.e(TAG,"name " + dCloud.getName());
}
});
这是我的setter和getter 公共类
private String cName = "ggg";
public String getName(){return cName;}
public void setName(String name) {cName = name;}
但是当我想在其他方法或其他地方使用getter时,我总是得到私有字符串cName 默认值" ggg" 或者如果我留空我得到了空。为什么私有字符串cName 没有停留在设定值以及如何修复它?
答案 0 :(得分:0)
除非从UI更改TextView的文本,否则cName的值不会更改。
我建议你在代码中的任何地方使用cName之前,先测试它的默认值(或者只是null):
如果cName等于其默认值,则用户尚未更改文本字段。否则,文本字段已更改,您可以通过调用getName()来获取新值。