【问题标题】:Android : How to differentaite setText and manually entered text [closed]Android:如何区分 setText 和手动输入的文本 [关闭]
【发布时间】:2013-05-03 10:04:05
【问题描述】:

我有一个 EditText。在按钮单击时调用 EditText 的 setText() 方法。如果使用按钮单击或用户手动输入位置,我想识别。 我使用过 TextWatcher ,如果用户手动输入位置并且使用 setText 时会调用 afterTextChange()。

如果editext是手动编辑或编程编辑的,是否可以识别场景。

请帮忙。

谢谢你的期待。

【问题讨论】:

  • 人们会认为,如果一个程序设置一个文本,它将能够以一种非常基本的方式记住这一点。或者是否有任何已知的软件显示阿尔茨海默病的案例?
  • 这很笼统......你想什么时候检查他们是否输入了文字?当他们点击一个按钮?当他们触摸屏幕时?键盘何时不再显示?
  • 在edittext上使用文本观察器。
  • 当然,如果在您的应用程序中调用了setText(),您,开发人员,就会知道它是从哪里触发的。例如,单击Button。无论您需要检查文本是如何设置的,为什么不使用boolean 标志来检查它?
  • 请提及做这种奇怪事情的目的。也许我们可以指导您做一些比这个选项更好的事情。

标签: android android-edittext settext


【解决方案1】:

你可以这样做:

private boolean isTextSetProgrammatically = false;

private void setTextProgrammatically(String text){

myEditText.removeTextChangedListener(instanceOfMyTextWatcher);
myEditText.setText(text);
isTextSetProgrammatically = true;
myEditText.addTextChangedListener(instanceOfMyTextWatcher)

}

然后将TextWatcher 设置为您的EditText,并在onTextChanged() 被触发时将isTextSetProgrammatically 设置为false。

【讨论】:

  • 我认为当您通过 settext() 设置文本时也会调用 onTextChanged()...
  • @PankajKumar 哦,你是对的。等等,我会编辑我的答案。
  • 是的,你是对的@PankajKumar
  • 我编辑了我的答案。现在 TextWatcher 将在设置文本之前取消注册。
【解决方案2】:

根据 Ahmad 的建议使用 textwatcher。如果在编辑文本中使用类型,您将知道。

   EditText search= (EditText) findViewById(R.id.search);
   search.addTextChangedListener(new TextWatcher() {

       public void onTextChanged(CharSequence s, int start, int before, int count) {
                 // s is the typed character sequence.   

       }

       public void beforeTextChanged(CharSequence s, int start, int count,
           int after) {


         }

         public void afterTextChanged(Editable s) {
         }
        });

【讨论】:

    【解决方案3】:

    您可以编写自定义 EditText 扩展 EditText 并覆盖 setText() 方法。

    @override
    public void setText(CharSequence str) {
       super.setText(...);
       // to do you callback
    }
    

    【讨论】:

    • 不,你不能! setText 是最终方法,不能在自定义 Edittext 中更改
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多