stk*_*ent 5 android annotations android-studio android-snackbar
我编写了一个默认Snackbar.make方法的包装器,以将自定义样式应用于我的Snackbar实例.我的自定义包装器的方法签名如下:
public static Snackbar makeCustom(
@NonNull View view,
@StringRes int resId,
@Snackbar.Duration int duration)
Run Code Online (Sandbox Code Playgroud)
其中Snackbar.Duration注释中定义android.support.design.widget.Snackbar.java如下:
/**
* @hide
*/
@IntDef({LENGTH_INDEFINITE, LENGTH_SHORT, LENGTH_LONG})
@IntRange(from = 1)
@Retention(RetentionPolicy.SOURCE)
public @interface Duration {}
Run Code Online (Sandbox Code Playgroud)
当我makeCustom使用以下参数调用时:
makeCustom(
activity.findViewById(android.R.id.content),
messageResId,
Snackbar.LENGTH_SHORT);
Run Code Online (Sandbox Code Playgroud)
我在IDE(Android Studio)中看到以下错误:
如果我直接调用Snackbar.make,我看到没有这样的错误,它具有以下签名:
public static Snackbar make(
@NonNull View view,
@StringRes int resId,
@Duration int duration) {
Run Code Online (Sandbox Code Playgroud)
看来,当我在自己的方法签名中使用时,Android Studio无法识别满足以下任一约束的值
@IntDef({LENGTH_INDEFINITE, LENGTH_SHORT, LENGTH_LONG})
@IntRange(from = 1)
Run Code Online (Sandbox Code Playgroud)
应该被认为是有效,而不是期待的是值满足两者的上述约束同时(这是不可能的,因为LENGTH_INDEFINITE,LENGTH_SHORT和LENGTH_LONG具有值-2,-1和0分别地).
Snackbar.Duration正确地应用了注释吗?| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |