当前位置: 首页 > 知识库问答 >
问题:

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

丌官嘉勋
2023-03-14

我想从editText获取字符串值,所以我使用TextWatcher onTextChanged方法在我的私有string cName上设置string值。它设置并获得正确的值。

@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 ”,或者如果我留空,我将得到null。为什么私有字符串cName不停留在设定值上,我该如何修复它?

共有1个答案

谷良弼
2023-03-14

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

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

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

 类似资料:
  • 代码段用于获取从文本文件中提取的一行文本,将其分离为单独的标记,并将每个标记存储在数组的索引中。起初我以为问题出在文本文件上,但是直接将字符串放入编辑器并不能解决这个问题。 使用字符串,如: 带分隔符的StringTokenizer对象返回前四个标记作为正确的字符串,但其余四个标记为null。 有趣的是,另一个字符串: “Gnollnonegeralany222taunttaunt” 鸡肉没有野兽

  • 我被封装困住了。在我看来,好像我做的每件事都是按规则做的,但它仍然不起作用。虽然我知道我错过了什么。我在和Eclipse合作。 我想通过创建一副标准的52张牌来进行一些练习,并尝试一下我学到的新东西。我在deckOfCard包中创建了一个Card类:

  • 我尝试使用liquibase使用liquibase“addDefaultValue”语法将我的列的默认值设置为null: 但是向myTable插入新行显示默认值仍然设置为“false”,就像以前一样。所以liquibase更改集不起作用。 如何设置列默认值为null与liquibase?

  • 问题内容: 我希望模仿允许用户指定“默认”返回值的内置函数(如)的行为。我最初的尝试是这样做 问题是,如果用户希望成为其返回值,则此函数将引发异常。第二次尝试: 这解决了上述问题,并允许用户指定任何任意值,但是带来了麻烦,因为用户必须始终在其函数调用中进行指定;他们不能只提供最后。同样,可以使用,但如果用户偏爱该语法,则会阻止用户使用。 结合并提供了可行的解决方案,但感觉这需要付出很多努力。它还可

  • 我遇到了一个问题,我有三个if语句,每个语句都有if String==null或String==“”,即使getText没有给出任何值,这些语句也没有激活。