Android 科特林在试图施展时出现问题;附件“可提取徽章”:本声明为选择性加入

Android 科特林在试图施展时出现问题;附件“可提取徽章”:本声明为选择性加入,android,kotlin,androidx,material-components-android,android-annotations,Android,Kotlin,Androidx,Material Components Android,Android Annotations,我会在我的Android应用程序中的按钮上使用BadgeDrawable,问题是当我试图通过attachBadgeDrawable设置按钮布局BadgeDrawable时,我得到一个错误,上面说: his declaration is opt-in and its usage should be marked with '@com.google.android.material.badge.ExperimentalBadgeUtils' or '@OptIn(markerClass = com

我会在我的Android应用程序中的
按钮上使用
BadgeDrawable
,问题是当我试图通过
attachBadgeDrawable
设置按钮布局
BadgeDrawable
时,我得到一个错误,上面说:

his declaration is opt-in and its usage should be marked with  '@com.google.android.material.badge.ExperimentalBadgeUtils' or '@OptIn(markerClass = com.google.android.material.badge.ExperimentalBadgeUtils.class)'
我使用这段代码的代码如下:

            btnInvia.viewTreeObserver.addOnGlobalLayoutListener(
                object : OnGlobalLayoutListener {
                    override fun onGlobalLayout() {
                        val badgeDrawable = BadgeDrawable.create(requireContext())
                        badgeDrawable.number = corpo
                        badgeDrawable.verticalOffset = 20
                        badgeDrawable.horizontalOffset = 15
                        BadgeUtils.attachBadgeDrawable(badgeDrawable, btnInvia, layoutInvia)
                        btnInvia.viewTreeObserver.removeOnGlobalLayoutListener(this)
                    }

                }
            )

如果可以使用,min SDK是24。

BadgeUtils
用androidx注释标记。通过这种方式,报告了在这种情况下实验API的使用情况,级别=
错误

在方法中,必须使用以下注释之一来抑制报告:

@ExperimentalBadgeUtils
@UseExperimental(markerClass = ExperimentalBadgeUtils::class)
fun onCreate(savedInstanceState: Bundle?) {
    //...
   btnInvia.viewTreeObserver.addOnGlobalLayoutListener(
      //..
   )
}
您还可以使用kotlin注释
@OptIn

@OptIn(ExperimentalBadgeUtils::class)
fun onCreate(savedInstanceState: Bundle?) {
        //...
       btnInvia.viewTreeObserver.addOnGlobalLayoutListener(
          //..
       )
}