如何删除无效侦听器

问题描述 投票:0回答:1

我正在制作音乐应用程序,它的底部包含一个滑块。为了解决由于某种原因监听器不活动而导致的另一个问题,我必须这样做,以便在发生事件时添加监听器,因为没有其他地方可以添加它。如何从一个对象中删除一个无效侦听器,然后添加另一个对象,这样我就没有大量的无效侦听器?

听众看起来像这样:

someMediaPlayer.currentTimeProperty().addListener(new InvalidationListener() 
            {
                public void invalidated(Observable ov) {

                    someMethod();

                }
            });
java javafx listener invalidation
1个回答
0
投票

使用您发布的代码,您将永远无法删除它,因为您不存储参考。每次调用new InvalidationListener()都会获得新的参考。而是存储该InvalidationListener对象,然后可以将其删除。

InvalidationListener listener = new InvalidationListener() 
        {
            public void invalidated(Observable ov) {

                someMethod();

            }
        };
someMediaPlayer.currentTimeProperty().addListener(listener);
....
someMediaPlayer.currentTimeProperty().removeListener(listener);
© www.soinside.com 2019 - 2024. All rights reserved.