【问题标题】:TextView not printing after entry into edit text进入编辑文本后TextView不打印
【发布时间】:2019-10-25 21:29:31
【问题描述】:

我的MainActivity.java 文件中有此代码,但是当在编辑文本中输入任何值并按下按钮时,相关字符串不会打印。我怎样才能使它在按下按钮时根据在编辑文本槽中输入的字符串显示某个文本?

public void ShowAge(View view){

        EditText entered = (EditText)findViewById(R.id.typehere);
        TextView value = (TextView)findViewById(R.id.answer);
        if(entered.getText().toString() == "Dog"){
            value.setText(R.string.dog);
            Typeface typeFace = Typeface.createFromAsset(getAssets(), "font.ttf");
            value.setTypeface(typeFace);}
        else if(entered.getText().toString() == "Cat"){
            value.setText(R.string.cat);
            Typeface typeFace = Typeface.createFromAsset(getAssets(), "font.ttf");
            value.setTypeface(typeFace);}
        else if(entered.getText().toString() == "Meal"){
            value.setText(R.string.meal);
            Typeface typeFace = Typeface.createFromAsset(getAssets(), "font.ttf");
            value.setTypeface(typeFace);}
        else if(entered.getText().toString() == "Chocolate"){
            value.setText(R.string.chocolate);
            Typeface typeFace = Typeface.createFromAsset(getAssets(), "font.ttf");
            value.setTypeface(typeFace);}
        else if(entered.getText().toString() == "Froyo"){
            value.setText(R.string.froyo);
            Typeface typeFace = Typeface.createFromAsset(getAssets(), "font.ttf");
            value.setTypeface(typeFace);}
        }

【问题讨论】:

  • 尝试使用equalsignorecase而不是==来比较字符串

标签: android android-edittext


【解决方案1】:

使用

 entered.getText().toString().equals("Some String")  {...

而不是

entered.getText().toString() == "Some String" {...

总是在比较字符串时。

【讨论】:

    【解决方案2】:

    您应该使用String.equals() 来比较字符串。这将比较字符串中的字符。等号运算符(==)比较的是内存位置,是不同的。

    【讨论】:

      【解决方案3】:

      就像上面的答案一样,如果你想比较不区分大小写,你应该使用 String.equals() 或 String.equalsIgnoreCase()。

      还考虑使用TextWatcher 来监控在 EditText 中输入的文本:

      例如:

          ...
      @Override
      public void afterTextChanged(Editable s){
      
              if (s == null || TextUtils.isEmpty(s.toString().trim())) {
                 return;
              }
              String enteredText = s.toString();
              if(TextUtils.isEmpty(enteredText)){
                  return;
              }
              int resString = -1;
              String font = "font.ttf";
              if(enteredText.equals("Dog")){
                  resString = R.string.dog;
              }
              else if(enteredText.equals("Cat")){
                  resString = R.string.cat;
              }
              else if(enteredText.equals("Meal")){
                 resString = R.string.meal;
              }
              else if(enteredText.equals("Chocolate")){
                  resString = R.string.chocolate;
              }
              else if(enteredText..equals("Froyo")){
                  resString = R.string.froyo;
              }
      
              if(resString>0){
                  Typeface typeFace = Typeface.createFromAsset(getAssets(), font);
                  value.setText(R.string.froyo);
                  value.setTypeface(typeFace);
              }
      }
      ...
      

      【讨论】:

        【解决方案4】:

        使用 if(entered.getText().toString().equalsIgnoreCase("Dog"))

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-08
          • 1970-01-01
          • 2013-10-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-10
          相关资源
          最近更新 更多