如何在Activeandroid中禁用模型扫描

7

我希望能够使用AA_MODEL标签在AndroidManifest.xml文件中定义我的模型类,并禁用自动搜索。因为目前当应用程序启动时,我会遇到类似以下错误的问题:

Couldn't create class.
    java.lang.ClassNotFoundException: android.support.v4.print.PrintHelperKitkat$1
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:204)
            at com.activeandroid.ModelInfo.scanForModelClasses(Unknown Source)
            at com.activeandroid.ModelInfo.scanForModel(Unknown Source)
            at com.activeandroid.ModelInfo.<init>(Unknown Source)
            at com.activeandroid.Cache.initialize(Unknown Source)
            at com.activeandroid.ActiveAndroid.initialize(Unknown Source)
            at com.activeandroid.ActiveAndroid.initialize(Unknown Source)
            at com.company.myapp.app.MyAppApplication.onCreate(Unknown Source)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4684)
            at android.app.ActivityThread.access$1400(ActivityThread.java:159)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1376)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:176)
            at android.app.ActivityThread.main(ActivityThread.java:5419)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
            at dalvik.system.NativeStart.main(Native Method)

如何正确地做?你能给我展示一个定义良好的AA_MODEL标签的例子吗?

你解决了这个问题吗?我也遇到了同样的错误! - ToddH
2个回答

13
您可以在您的应用对象中定义模型。这将禁用模型自动搜索。
public class ShantApplication extends Application {

@Override
public void onCreate() {
    super.onCreate();

    initializeDB();
}

protected void initializeDB() {
    Configuration.Builder configurationBuilder = new Configuration.Builder(this);
    configurationBuilder.addModelClasses(Test.class);
    configurationBuilder.addModelClasses(ShoppingList.class);
    configurationBuilder.addModelClasses(ShoppingListItem.class);
    configurationBuilder.addModelClasses(ArticleInfoModel.class);

    ActiveAndroid.initialize(configurationBuilder.create());
}

1
如果你遇到了这个问题,并且你已经在你的项目中使用了自定义应用程序和ActiveAndroid,那么现在你需要继承android.app.Application而不是com.activeandroid.app.Application。 - Jorge Garcia
2
这里的Configuration对象是什么?我似乎无法找到正确的导入语句。Eclipse建议使用import android.content.res.Configuration;,但不起作用。 - mbwasi
1
它是com.activeandroid.Configuration。 - Dominik Suszczewicz
4
这是我使用的jar包链接:http://clinker.47deg.com/nexus/content/groups/public/com/michaelpardo/activeandroid/3.1.0-SNAPSHOT/activeandroid-3.1.0-20141007.143731-1.jar。 - Dominik Suszczewicz
2
@DominikSuszczewicz 谢谢,这个方法可行。ActiveAndroid GitHub 上的 JAR 包不是最新的。 - mbwasi
显示剩余2条评论

5
在Androidmanifest文件中使用XML文件:
<meta-data
 android:name="AA_MODELS"
 android:value="your.package.ModelA,your.package.ModelB,your.package.ModelC"/>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接