支持v7 MenuPopupHelper现在隐藏并限制为LIBRARY_GROUP

时间:2017-07-07 11:24:39

标签: android android-appcompat lint

最近我的android.support.v7.view.menu.MenuPopupHelper使用时出现了一个lint错误,该错误现已隐藏,并且仅限于在其库组中使用。

确切消息:

MenuPopupHelper constructor can only be called from within the same library group (groupId=com.android.support)

摘自MenuPopupHelper.java班级:

/**
 * Presents a menu as a small, simple popup anchored to another view.
 *
 * @hide
 */
@RestrictTo(LIBRARY_GROUP)
public class MenuPopupHelper implements MenuHelper {

问题: 知道何时以及为何发生这种情况?或者我应该寻找的解决方法是什么?

3 个答案:

答案 0 :(得分:0)

我刚刚发现here是该工具的预发布版本中的错误。

如果您要在整个项目中使用变通办法,请将以下代码段放在项目的build.gradle文件中

android {
  lintOptions {
    disable 'RestrictedApi'
  }
}

OR
使用下面的注释来抑制该特定方法或类的棉绒警告

@SuppressLint("RestrictedApi")

答案 1 :(得分:0)

我在 Lint 报告中有一个错误:

<块引用>

错误:MenuPopupHelper.show 只能从同一个内部调用 库组前缀(引用 groupId=androidx.appcompat with 来自 groupId=MyProject 的前缀 androidx) [RestrictedApi] }.show()

如果您不在 PopupMenu 中使用 icons,您可以删除 MenuPopupHelper

之前:

val popupMenu = PopupMenu(context, v)
...
val menuHelper = MenuPopupHelper(context, popupMenu.menu as MenuBuilder, v)
menuHelper.gravity = Gravity.END
menuHelper.show()

之后:

val popupMenu = PopupMenu(context, v)
...
popupMenu.gravity = Gravity.END
popupMenu.show()

或添加 @SuppressLint("RestrictedApi") 注释。

答案 2 :(得分:-3)

请尝试使用url="${createLink(controller: "myController", action: "myAction")}"

android.support.v7.widget.PopupMenu