Setter设置String值但Getter返回null或默认String值

时间:2016-06-06 12:34:33

标签: java android string null getter-setter

我想从 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 没有停留在设定值以及如何修复它?

1 个答案:

答案 0 :(得分:0)

除非从UI更改TextView的文本,否则cName的值不会更改。

我建议你在代码中的任何地方使用cName之前,先测试它的默认值(或者只是null):

如果cName等于其默认值,则用户尚未更改文本字段。否则,文本字段已更改,您可以通过调用getName()来获取新值。