停止侦听更多侦听器事件

时间:2013-08-17 05:39:04

标签: android listener event-listener

我听onGlobalLayoutListener,如下面的代码所示。我只想听一次。 调用onGlobalLayout()后,我想停止收听它。

我尝试使用removeOnGlobalLayoutListener()方法但是会发出警告调用所需的API级别16(当前最小值为14)

我也尝试过使用removeGlobalOnLayoutListener。但它已被弃用。

代码:

searchWebView.getViewTreeObserver().addOnGlobalLayoutListener(
                        new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {

        // Do something
        // Remove listener
    }
});

如何删除onGlobalLayoutListener

修改:

enter image description here

1 个答案:

答案 0 :(得分:7)

您可以使用以下代码删除OnGlobalLayoutListenerstrikethrough上仍有removeGlobalOnLayoutListener(),已弃用。但是,通过使用注释来处理棉绒警告。

@SuppressWarnings("deprecation")
@SuppressLint("NewApi")
searchWebView.getViewTreeObserver().addOnGlobalLayoutListener(
                    new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {

        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
                searchWebView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
            } else {
                searchWebView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            }

    }
});