当我编译一个我使用BindingAdapter
的项目时,Android Studio总会显示很多警告并跳转到我编写BindingAdapter
代码的源文件中。如何解决它,我我不想在编译时显示它并且我也不想删除命名空间应用程序或其他,任何人都可以帮助我。谢谢!!!
警告如下:
示例源代码:
答案 0 :(得分:0)
正如@Michael Spitsin在评论中指出的那样,只需从注释中删除“app:”命名空间即可。您可以在布局XML中保留“app:”命名空间。命名空间将在内部删除,除非它是android:
;所有其他名称空间都被视为相同。
警告用于通知您命名空间对注释没有任何影响。因此,例如,您不能为@BindingAdapter("app:src")
和@BindingAdapter("foo:src")
使用不同的方法 - 在将命名空间用作该批注的实现中的键之前,将删除该命名空间。唯一的例外是android
命名空间;您也可以@BindingAdapter("android:src")
和@BindingAdapter("app:src")
。
如果查看实现@BindingAdapter
注释的源代码,您将看到删除了命名空间,这就是警告的原因。例如,摘自android.databinding.tool.store.SetterStore.addBindingAdapter
:
public void addBindingAdapter(ProcessingEnvironment processingEnv, String attribute,
ExecutableElement bindingMethod, boolean takesComponent) {
attribute = stripNamespace(attribute);
...您可以看到名称空间被剥离,如下所示:
private static String stripNamespace(String attribute) {
if (!attribute.startsWith("android:")) {
int colon = attribute.indexOf(':');
if (colon >= 0) {
attribute = attribute.substring(colon + 1);
}
}
return attribute;
}
这样做是因为绑定适配器需要跨项目中的任何和所有源文件工作,无论特定XML文件中的命名空间使用了什么字符串。