如何删除失效侦听器
How to remove invalidation listener
我正在制作一个音乐应用程序,它在底部有一个滑块。为了解决我遇到的另一个问题,即监听器由于某种原因没有处于活动状态,我必须这样做,以便在事件发生时添加监听器,因为没有其他地方可以添加它。如何从对象中删除一个失效侦听器,然后添加另一个对象,这样我就没有大量的失效侦听器?
听众看起来像这样:
someMediaPlayer.currentTimeProperty().addListener(new InvalidationListener()
{
public void invalidated(Observable ov) {
someMethod();
}
});
使用您发布的代码,您将永远无法删除它,因为您没有存储参考。每次 new InvalidationListener()
被调用时你都会得到一个新的引用。而是存储该 InvalidationListener 对象,然后您可以将其删除。
InvalidationListener listener = new InvalidationListener()
{
public void invalidated(Observable ov) {
someMethod();
}
};
someMediaPlayer.currentTimeProperty().addListener(listener);
....
someMediaPlayer.currentTimeProperty().removeListener(listener);
我正在制作一个音乐应用程序,它在底部有一个滑块。为了解决我遇到的另一个问题,即监听器由于某种原因没有处于活动状态,我必须这样做,以便在事件发生时添加监听器,因为没有其他地方可以添加它。如何从对象中删除一个失效侦听器,然后添加另一个对象,这样我就没有大量的失效侦听器?
听众看起来像这样:
someMediaPlayer.currentTimeProperty().addListener(new InvalidationListener()
{
public void invalidated(Observable ov) {
someMethod();
}
});
使用您发布的代码,您将永远无法删除它,因为您没有存储参考。每次 new InvalidationListener()
被调用时你都会得到一个新的引用。而是存储该 InvalidationListener 对象,然后您可以将其删除。
InvalidationListener listener = new InvalidationListener()
{
public void invalidated(Observable ov) {
someMethod();
}
};
someMediaPlayer.currentTimeProperty().addListener(listener);
....
someMediaPlayer.currentTimeProperty().removeListener(listener);