Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 调用append后的Textwacher循环_Android - Fatal编程技术网

Android 调用append后的Textwacher循环

Android 调用append后的Textwacher循环,android,Android,我对TextWatcher有问题。编辑完成后,我想附加“kg”字符串。但在我尝试编辑editView后,它会循环,我的应用程序会崩溃。有人能帮我吗?谢谢 它的循环是因为设置文本调用PostTextChanged。您可以删除文本观察程序,更改文本,然后重新添加文本观察程序。它的循环,因为设置文本调用后文本更改。您可以删除文本监视程序,更改文本,然后重新添加文本监视程序。您可以使用if语句来管理此操作,但我认为它可以以更好的方式关闭 weight.addTextChangedListene

我对TextWatcher有问题。编辑完成后,我想附加“kg”字符串。但在我尝试编辑editView后,它会循环,我的应用程序会崩溃。有人能帮我吗?谢谢


它的循环是因为设置文本调用PostTextChanged。您可以删除文本观察程序,更改文本,然后重新添加文本观察程序。

它的循环,因为设置文本调用后文本更改。您可以删除文本监视程序,更改文本,然后重新添加文本监视程序。

您可以使用if语句来管理此操作,但我认为它可以以更好的方式关闭

    weight.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable editable) {

            if(!editable.getText().contains("kg"))
               editable.append(" kg");
        }
    });

你可以用if语句来处理这个问题,但我认为它可以用更好的方式来处理

    weight.addTextChangedListener(new TextWatcher() {

        @Override
        public void afterTextChanged(Editable editable) {

            if(!editable.getText().contains("kg"))
               editable.append(" kg");
        }
    });
遵循以下步骤:

  • 暂时删除TextWatcher
  • 对内容进行更改吗
  • 再次添加TextWatcher

    weight.addTextChangedListener(new TextWatcher() {
         @Override
         public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
         }
    
         @Override
         public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
         }
    
         @Override
         public void afterTextChanged(Editable editable) {
             if (editable.toString().contains("kg")) return
             weight.removeTextChangedListener(this);
             editable.append(" kg");
             weight.addTextChangedListener(this);
         }
     });
    
  • 遵循以下步骤:

  • 暂时删除TextWatcher
  • 对内容进行更改吗
  • 再次添加TextWatcher

    weight.addTextChangedListener(new TextWatcher() {
         @Override
         public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
         }
    
         @Override
         public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
         }
    
         @Override
         public void afterTextChanged(Editable editable) {
             if (editable.toString().contains("kg")) return
             weight.removeTextChangedListener(this);
             editable.append(" kg");
             weight.addTextChangedListener(this);
         }
     });
    

  • 看这里:看这里:已经试过了。每次我按一个键(字母、数字、退格或任何其他键),它都会添加“kg”。这种编辑可能会导致它在您第一次输入字符时添加kg,然后再也不会添加kg了。每次我按一个键(字母、数字、退格或任何其他键),它都会添加“kg”。此编辑可能会导致它在您第一次输入字符时添加kg,然后再也不会添加kg。根据您的想法,它不再循环,但每次我按任何键,它都会添加“kg”。我能想到的混乱解决方案是将可编辑设置为
    editable.text.replaceFirst(“kg”),然后在末尾附加“kg”。尝试你的想法,它不再循环,但每次我按任何键时它都会添加“kg”。我能想到的混乱解决方案是将可编辑设置为
    editable.text.replaceFirst(“kg”),即“kg”)
    然后在末尾加上“kg”,只需稍作改动,你的想法就行了。我不能使用editable,因为它没有getText方法。我只是改变了重量和它的工作编辑。谢谢你,你的想法很好。我不能使用editable,因为它没有getText方法。我只是改变了重量和它的工作编辑。非常感谢。