Jake Wharton 在最近的一次演讲中提到了这个库,它看起来是避免大量样板文件的好方法,所以我尝试了一下。但没有任何成功。https://github.com/SimonVT/schematic https://github.com/SimonVT/schematic
下面是附加了注释的内容提供程序的定义和清单提供程序元素。问题是 Android Studio 不喜欢提供程序定义,因为内容提供程序类不扩展 ContentProvider。
Caused by: java.lang.ClassCastException: com.myapp.SchematicContentProvider
cannot be cast to android.content.ContentProvider
我缺少什么?它可能与我没有使用的 android-apt 有关(Schematic 推荐它,但似乎并不需要它) - 当我尝试使用 android-apt 时,我收到一个VerifyError,因此必须将其从构建中删除。
AndroidManifest.xml
<provider
android:name="com.myapp.SchematicContentProvider"
android:authorities="com.myapp.provider"
android:exported="false" />
以及类定义:
import net.simonvt.schematic.annotation.ContentProvider;
import net.simonvt.schematic.annotation.ContentUri;
import net.simonvt.schematic.annotation.TableEndpoint;
@ContentProvider(authority = SchematicContentProvider.AUTHORITY, database = SchematicDatabase.class)
public class SchematicContentProvider {
public static final String AUTHORITY = "com.myapp.provider";
interface Path {
String ROUTES = "routes";
}
@TableEndpoint(table = SchematicDatabase.ROUTES) public static class Routes {
@ContentUri(path = Path.ROUTES, type = "vnd.android.cursor.dir/list", defaultSort = SchematicRouteColumns.TITLE + " ASC")
public static final Uri ROUTES = Uri.parse("content://" + AUTHORITY + "/" + Path.ROUTES );
}
}
我已经浏览了原理图示例应用程序(自述文件中的代码片段是部分的),但我看不到我错过了什么。我不确定如何确认代码生成是否正常工作,如何检查?我查看了 build 下的内容,但只在 Schematic 包名称下看到了 BuildConfig。
很遗憾它不适合我,它有很大的潜力。
您没有声明正确的 ContentProvider。
您必须在清单中声明生成的一个。
我应该喜欢这样:
<provider
android:name=".yourOptionalPackage.generated.SchematicContentProvider"
android:authorities="com.myapp.provider"
android:exported="false" />
如果您的 IDE(Android Studio/IntelliJ)显示红色警告,只需单击“Make Project”按钮即可生成代码。
如果它仍然不起作用,请在您的项目中包含 apt-libs(值得),并且为了节省更多时间,请使用这个很棒的图书馆 http://androidannotations.org/也基于 apt-libs ;)
如果我是否解决了您的问题,以及您是否需要配置 gradle 文件的帮助,请在评论中告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)