ClassNotFoundException:未find类“android.os.PersistableBundle”Otto Android 5.0

我有一个奇怪的问题。 我有一个应用程序,我部署在Android 4.4设备上,并使用Otto库。 我在Android 5.0设备上部署了应用程序。 它仍然有效。 我重试了4.4和应用程序不会启动。

显然,它试图使用API​​ 21类的PersistableBundle.class。 在这里我的日志:

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.os.PersistableBundle" on path: DexPathList[[zip file "/data/app/fr.myapp.apk"],nativeLibraryDirectories=[/data/app-lib/fr.myapp, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457)             at java.lang.Class.getDeclaredMethods(Native Method)             at java.lang.Class.getDeclaredMethods(Class.java:656)             at com.squareup.otto.AnnotatedHandlerFinder.loadAnnotatedMethods(AnnotatedHandlerFinder.java:52)             at com.squareup.otto.AnnotatedHandlerFinder.findAllProducers(AnnotatedHandlerFinder.java:126)             at com.squareup.otto.HandlerFinder$1.findAllProducers(HandlerFinder.java:33)             at com.squareup.otto.Bus.register(Bus.java:191) 

Solutions Collecting From Web of "ClassNotFoundException:未find类“android.os.PersistableBundle”Otto Android 5.0"

我find了“解决scheme”。 只需从您的活动中删除此function:

 @Override public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { super.onSaveInstanceState(outState, outPersistentState); } 

targetVersion更改为您正在运行的设备的API版本。

当我的设备有4.4(API 19)时,我的targetVersion = 21 ,将值改为19解决了这个问题。

我在三星Galaxy 3mini和本地话务员手机上也遇到了同样的问题,但是我用重写活动method.i希望它适用于你。

  @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); try { BusApplication.getInstance().register(this); } catch (Exception e) { e.printStackTrace(); } }