0

我使用您要为其创建类的库项目 ActiveAndroid:

import com.activeandroid.app.Application;
public class App extends Application {
    @Override
    public void onCreate()
    {
        super.onCreate();
    }
}

在模拟器上一切正常,数据存储在数据库中等等。但是当你启动手机时,应用程序崩溃了。并立即。

错误:

01-29 12:55:19.027  14098-14098/com.skip.client.customer E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.skip.client.customer, PID: 14098
    java.lang.NoClassDefFoundError: android.support.v4.app.ActivityCompat21$SharedElementCallbackImpl
            at java.lang.Class.classForName(Native Method)
            at java.lang.Class.forName(Class.java:305)
            at com.activeandroid.ReflectionUtils.getModelClasses(ReflectionUtils.java:83)
            at com.activeandroid.DatabaseHelper.onCreate(DatabaseHelper.java:46)
            at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:252)
            at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
            at com.activeandroid.Registry.openDatabase(Registry.java:149)
            at com.activeandroid.Registry.initialize(Registry.java:107)
            at com.activeandroid.ActiveAndroid.initialize(ActiveAndroid.java:8)
            at com.activeandroid.app.Application.onCreate(Application.java:9)
            at com.skip.client.customer.App.onCreate(App.java:12)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4473)
            at android.app.ActivityThread.access$1500(ActivityThread.java:144)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5146)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
4

1 回答 1

0

看起来getModelClasses()活跃的 android 正在尝试在您的代码中找到一个与您在 AndroidManifest.xml 中指定的模型类匹配的 java 类。你能张贴你的清单吗?具体来说,我正在寻找这样的一行:

    <meta-data
        android:name="AA_MODELS"
        android:value="
            com.example.myapp.Book,
            com.example.myapp.Chapter,
            com.example.myapp.Library
        "/>

如果您的代码中没有定义 classes BookChapterLibrary,那么您将得到 no-class-def-found 异常。

此外,我建议您更改您的应用程序,让您的自定义应用程序类派生自应用程序基类,android.app.Application而不是派生自应用ActiveAndroid程序基类。然后显式初始化ActiveAndroid. 这将允许您拥有自己的异常处理ActiveAndroid.initialize(),然后探索抛出异常的原因。您还可以使用调试器单步执行该initialize()方法并查看异常来自何处。

import com.activeandroid.ActiveAndroid;
public class App extends android.app.Application {
    @Override
    public void onCreate()
    {
        super.onCreate();
        // add your own exception handling around this.  Not that you can do much
        // in your app without a database, but at least you'd be able to log a
        // meaningful error to the log so you can know details about the exception
        // being thrown.
        ActiveAndroid.initialize(this);
    }
}
于 2015-06-30T13:27:23.077 回答