【问题标题】:How can I annotate my method to return a Visibility type int in Android? [duplicate]如何注释我的方法以在 Android 中返回 Visibility 类型 int? [复制]
【发布时间】:2015-07-28 08:04:11
【问题描述】:

当我返回一个常规 int 并尝试将该 int 用作 Visibility-annotated int 的输入参数时,Android 工作室会抱怨。如何注释我的方法以使 AS 不会产生此警告?我看到 View 有一个公共的@interface“可见性”,但出于某种奇怪的原因,即使它是公共的,我也无法从我的项目中引用 android.view.View.Visibility。为什么?

我的方法:

public static int booleanToVisibleOrInvisible(boolean visible) {
    return visible ? View.VISIBLE :  View.INVISIBLE;
}

我需要什么:

@android.view.View.Visibility  // <- does not compile
public static int booleanToVisibleOrInvisible(boolean visible) {
    return visible ? View.VISIBLE :  View.INVISIBLE;
}

【问题讨论】:

    标签: android


    【解决方案1】:

    但由于某些奇怪的原因,我无法从我的项目中引用 android.view.View.Visibility,即使它是公开的。

    查看源代码,你会看到这个注解是用@hide 标签“注解”的:

    /** @hide */
    @IntDef({VISIBLE, INVISIBLE, GONE})
    @Retention(RetentionPolicy.SOURCE)
    public @interface Visibility {}
    

    @hide 标记用于从android.jar 文件中排除带注释的包/类/方法/等,因此在编译时不可用。我怀疑您是否可以在代码中以某种方式使用相同的注释,除非 Google 工程师从源代码中删除 @hide 标记。
    您可以使用 //noinspection ResourceType 评论来取消此警告。

    【讨论】:

    • 哇...在 Google 中模糊了代码和 cmets 之间的界限。感谢您的提醒。 PS:我必须写@SuppressWarnings("ResourceType") 才能让它工作。 PPS:啊,另一个是内联的。
    • 为什么那个注释竟然被隐藏了?
    猜你喜欢
    • 2017-03-15
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2015-01-13
    • 2021-06-06
    • 2022-01-14
    • 2017-09-21
    • 2012-12-02
    相关资源
    最近更新 更多