【问题标题】:How to show different Message for different input length in EditText?如何在 EditText 中为不同的输入长度显示不同的消息?
【发布时间】:2019-08-08 11:32:22
【问题描述】:

我想针对用户输入的不同长度向用户显示一些不同的消息。但是我的代码不起作用。这有什么问题?

EditText boxID = findViewById(R.id.vcInput);
Button button = findViewById(R.id.refresh);
TextView tv = findViewById(R.id.message)

final int inputLength = boxID.getText().toString().length();


if(inputLength >= 10 && inputLength <= 11)
  {tv.setText("Refresh request sent");}

else if(inputLength<1)
       {tv.setText("VC number field looks empty");} //Only this one works at any input length

else if(inputLength>1 && inputLength<10)
       {tv.setText("VC number must be at least 10 digit");}

else {tv.setText("Wrong input");}

【问题讨论】:

  • 它怎么不特别工作?
  • 你需要一个addTextChangedListener
  • 只有第一个 Else if 消息(VC 编号字段看起来为空)显示在任何输入长度..
  • 删除 toString(); final int inputLength = boxID.getText().length();
  • 是的,我放了 OnClickListener,这里只是将代码缩短为我所面临的事实。

标签: java android conditional


【解决方案1】:

好的,你有3个条件(实际上是4个)
inputLength &gt;= 10 &amp;&amp; inputLength &lt;= 11
inputLength&lt;1
inputLength&gt;1 &amp;&amp; inputLength&lt;10
else

你可以这样:

if(inputLength >= 10 && inputLength <= 11)
  {tv.setText("Refresh request sent");}

if(inputLength<1)
       {tv.setText("VC number field looks empty");}

if(inputLength>1 && inputLength<10)
       {tv.setText("VC number must be at least 10 digit");}

if(inputLength > 11)
   {tv.setText("Wrong input");}

else if 语句也有类似的问题。我必须重建我的条件树。

【讨论】:

    【解决方案2】:

    您的inputLengthfinal。最初 inputLength 是空的,它被保存到最终字段 inputLength 中,值为 0。这就是为什么只有第二个条件被触发。

    inputLength 值是在onClick 被触发之前设置的。

    一种解决方案是使用TextWatcher 或更简单的方法是将inputLength 移动到onClick 中,这样您可以在每个onClick 触发时获得一个新的inputLength 值:

        @Override
        public void onClick(View v) {
            final int inputLength = boxID.getText().toString().length();
    
    
           new Handler().postDelayed(new Runnable() { 
              @Override
              public void run() {
                 if(inputLength >= 10 && inputLength <= 11)
                    tv.setText("Refresh request sent");
    
                 else if(inputLength<1)
                    tv.setText("VC number field looks empty"); //Only this one works at any input length
    
                 else if(inputLength>1 && inputLength<10)
                    tv.setText("VC number must be at least 10 digit");
    
                 else tv.setText("Wrong input");
              }
           })
       }
    

    【讨论】:

      【解决方案3】:

      你要找的,大概是TextWatcher

      使用示例:

      boxID.addTextChangedListener(new TextWatcher() {
          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
      
              // TODO Auto-generated method stub
          }
      
          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {
      
              // TODO Auto-generated method stub
          }
      
          @Override
          public void afterTextChanged(Editable s) {
      
              int inputLength = s.length();
      
      
              if(inputLength >= 10 && inputLength <= 11)
                {tv.setText("Refresh request sent");}
      
              else if(inputLength<1)
                {tv.setText("VC number field looks empty");} 
      
              else if(inputLength>1 && inputLength<10)
                {tv.setText("VC number must be at least 10 digit");}
      
              else {tv.setText("Wrong input");}
          });
      

      【讨论】:

        猜你喜欢
        • 2014-02-27
        • 1970-01-01
        • 2021-01-03
        • 1970-01-01
        • 2012-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-04
        相关资源
        最近更新 更多