从另一个类调用一个监听器

时间:2013-04-29 14:48:50

标签: android

在我的android项目的主要类中,我有大约六个监听器,具有以下结构:

temp.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable arg0) {

            }

            public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) { }
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }

        });

但它有点杂乱......我想要做的目标是创建一个通用类,例如TextBox,它包含所有的侦听器。按钮与其听众一样。 你明白吗?我怎么能这样做?

使用这个系统,我可以用这种方式调用方法:

temp.addTextChangedListener(TextBox.temp())
test.addTextChangedListener(TextBox.test())

如果我已经解释得很严重,请告诉我。 感谢。

2 个答案:

答案 0 :(得分:0)

使用所有侦听器定义类:

Class Listeners {
    public class Listener1 extends EditView.TextChangedListener{

    ...

    }
}

然后根据需要实例化它们:

temp.addTextChangedListener(new Listeners.Listener1());

答案 1 :(得分:0)

在你计划实现的类中(比如说TextBox),根据需要创建尽可能多的方法,应该返回例如TextWatcher接口的匿名实现 看一看:

public class TextBox{
  public static TextWatcher temp(){
    return new TextWatcher() {
            public void afterTextChanged(Editable arg0) {

            }
            public void beforeTextChanged(CharSequence s, int arg1, int arg2, int arg3) { }
            public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }
        };
  }
}

使用它:

temp.addTextChangedListener(TextBox.temp());

我不喜欢这种方法,但仍然希望它有所帮助......, 我建议你阅读这篇文章:

http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

http://docs.oracle.com/javase/tutorial/uiswing/events/

在处理事件和听众时,他们会给你一些常见设计模式的想法......