首页 > 解决方案 > 每当更改输入/控件时,如何调用事件侦听器或方法?

问题描述

我有一个包含一堆广播组、复选框和文本字段的表单。我试图找出一种方法来在每次这些输入中的任何一个发生更改时调用方法(即选中单选按钮,选中复选框,更改文本字段)。事件侦听器不需要知道更改了哪些输入。

我该怎么做呢?我已经尝试在布局中添加一个事件侦听器,但这不起作用,因为事件侦听器仅在用户点击背景时被调用,并且如果任何输入被触摸它就不会触发。我真的不想为每个输入创建一个单独的侦听器。

有什么建议么?

更新:我也尝试过GestureDetector按照此处所述实现 a ,但它似乎没有在我的控制台中记录任何内容。

标签: android

解决方案


恐怕由于您希望收到不同类型事件的通知,因此您必须为每种控件类型创建适当的侦听器并从中调用更新方法。如果您有多个相同类型的单独控件,您可以创建抽象类并为每个控件扩展它。与此类似的东西:

class AbstractTextWatcher implements TextWatcher {
   protected OnInputTriggered onInputTriggered;

   public AbstractTextWatcher(OnInputTriggered onInputTriggered){
     this.onInputTriggered = onInputTriggered;
   }
   // afterTextChanged and beforeTextChanged skipped for brevity
   @Override
   public void onTextChanged(CharSequence s, int start, int before, int count) {
     onInputTriggered.onInputTrigerred();
   }
 }
 // sample OnInputTriggered listener
 class OnInputTriggered {
    public void onInputTrigerred(){
      // do stuff you need
    }
 }

推荐阅读