【发布时间】:2013-01-14 03:13:46
【问题描述】:
我编写与其他应用程序交互的服务。它在已经有监听器的视图(按钮、文本视图、...)上注册监听器。我需要用我自己的听众(作品)替换它们,做一些事情,然后注销我的听众并恢复旧的。
- 一个带有 onClickListener 按钮的应用正在运行
- 我的服务在 UI-Thread 中注册了一个 onClickListener + 做一些事情
- 我的服务恢复了旧的监听器
如果有 view.getOnClickListener 方法,那就很容易了。然后我可以保存旧的并在完成后替换新的监听器。
有没有办法从一个视图中获取侦听器,或者将多个相同类型的侦听器绑定到一个视图?
Button btn = (Button) findViewById(R.id.btn1);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//do something
}
});
// I need to do, but found no solution for that.
View.OnClickListener oldListener = btn.getOnClickListener();
如果我将新侦听器注册到视图,旧的侦听器会被覆盖,对吗?如果两个侦听器(“新”和“旧”)同时存在也可以。只有旧的不能消失。
编辑:不幸的是,我无法在分配时保存侦听器。我需要从视图组件中获取它。
谢谢
【问题讨论】:
-
你不能通过 setOnClickListener 方法设置你的旧监听器吗?
setOnClickListener(old_listener); -
不,因为除了服务“控制/挂钩(通过检测)”的应用程序小部件之外,我什么都不知道。所以我无法在分配旧监听器时保存它,因为我没有应用程序的 src 代码。使用仪器,我可以获得所有小部件、按钮等,但我还需要当前活动的侦听器。希望这能让问题更清楚。
-
嗨朋友,你做到了吗?我想做同样的事情@dr.AtZe