为了账号安全,请及时绑定邮箱和手机立即绑定

如何在EditText中为不同的输入长度显示不同的消息?

如何在EditText中为不同的输入长度显示不同的消息?

慕姐4208626 2022-08-17 17:24:57
我想向用户显示一些不同的消息,用于他们所做的不同长度的输入。但是我的代码不起作用。这是怎么回事?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 lengthelse if(inputLength>1 && inputLength<10)       {tv.setText("VC number must be at least 10 digit");}else {tv.setText("Wrong input");}
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

你要找的,可能是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");}

    });


查看完整回答
反对 回复 2022-08-17
?
GCT1015

TA贡献1827条经验 获得超4个赞

好的,你有3个条件(实际上是4个)




和inputLength >= 10 && inputLength <= 11inputLength<1inputLength>1 && inputLength<10else


你可以让它像这样:


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


查看完整回答
反对 回复 2022-08-17
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

你是.最初,输入长度为空,它被保存到值为 0 的最终字段中。这就是为什么只有第二个条件被触发。inputLengthfinalinputLength


该值是在触发之前设置的。inputLengthonClick


一个解决方案要么是使用,要么是一个更简单的解决方案,只是在里面移动,这样你就可以为每个触发器获得一个新的输入长度值:TextWatcherinputLengthonClickonClick


    @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");

          }

       })

   }


查看完整回答
反对 回复 2022-08-17
  • 3 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信