【问题标题】:Print input in another edittext while input is done in one edittext without a button press在另一个编辑文本中打印输入,同时在一个编辑文本中完成输入而无需按下按钮
【发布时间】:2016-03-05 06:59:36
【问题描述】:

假设我有 2 个 EditText 对象 inp1 和 inp2。如果我在 inp1 中输入某些内容,我希望它出现在 inp2 中,反之亦然。对其中任何一个所做的更改也应该更改另一个。我实际上想要两个 EditText 对象分别输入以 10 和 2 为底的数字。当我输入一个二进制数时,我希望它的等效十进制数出现在另一个 EditText 中,反之亦然,而不使用任何按钮或任何东西。是否有任何与 EditText 按钮的 onClick 属性等效的东西?每当 EditText 的文本发生变化时,它可能会自动调用一个函数。 我希望我能把我的问题说清楚。 谢谢。

【问题讨论】:

标签: java android android-studio


【解决方案1】:

您需要在两个字段上都使用TextWatcher。这个question的答案基本上和你描述的一样

【讨论】:

    【解决方案2】:

    你可以像这样使用TextWatcher

    tagNameEditText.addTextChangedListener(new TextWatcher() {
    
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                    }
    
    
                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {
                    // set text or result in other EditText here   
                    }
    
                    @Override
                    public void afterTextChanged(Editable s) {
    
                                  }
                });
    

    在这个监听器的 onTextChanged() 方法中你可以设置其他 EditText 中的文本

    【讨论】:

      【解决方案3】:

      使用 TextWatcher。 这是短代码:

      private final TextWatcher edit_one_Watcher = new TextWatcher() {
              public void beforeTextChanged(CharSequence s, int start, int count, int after) {
      
              }
      
              public void onTextChanged(CharSequence s, int start, int before, int count) {
               // enter your logic here 
      //and print in second edittext
              }
      
              public void afterTextChanged(Editable s) {
      
              }
          };
      

      和

      private final TextWatcher edit_second_Watcher = new TextWatcher() {
                  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
      
                  }
      
                  public void onTextChanged(CharSequence s, int start, int before, int count) {
                   // enter your logic here 
          //and print in first edittext 
                  }
      
                  public void afterTextChanged(Editable s) {
      
                  }
              };  
      

      注意:使用 boolean / flag 来忽略 autotextchange。

      .i.e. boolean ignoreFirstTextChange = true;
      .i.e. boolean ignoreSecondTextChange = true;
      

      【讨论】:

      • 让我们假设输入是 inp1 和 inp2。如何初始化它们以使用 TextWatcher 功能?它告诉我 edit_one_Watcher 和 edit_second_Watcher 从未使用过。
      • inp1.addTextChangedListener(edit_one_Watcher); inp2.addTextChangedListener(edit_second_Watcher);
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2012-03-28
      • 1970-01-01
      • 2015-06-29
      相关资源
      最近更新 更多