2015-03-04 13 views
18

मुझे एक अजीब समस्या है। मेरे पास एक ऐप है जिसे मैंने एंड्रॉइड 4.4 डिवाइस पर तैनात किया है और ओटो लाइब्रेरी का उपयोग किया है। मैंने ऐप को एंड्रॉइड 5.0 डिवाइस पर तैनात किया। यह अभी भी काम करता है। मैंने 4.4 पर पुनः प्रयास किया और ऐप लॉन्च नहीं होगा।कक्षा नॉटफाउंड अपवाद: कक्षा "android.os.PersistableBundle" नहीं मिला ओटो एंड्रॉइड 5.0

जाहिर है, यह PersistableBundle.class का उपयोग करने का प्रयास करता है जो एक एपीआई 21 कक्षा है। यहां मेरा लॉग:

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) 
+0

मैं अगर तुम एक है जो इस मुद्दे पर टिप्पणी कर रहे हैं यकीन नहीं है, लेकिन वहाँ [इस पर एक बकाया मुद्दा] है (https://github.com/square/otto/issues/139)। – CommonsWare

+0

हाँ यह मैं हूं। मुझे बस नीचे समाधान मिला। – Cocorico

+0

अद्यतन करने के लिए एंड्रॉइड ओएस 5.0 ने मेरे लिए समस्या हल की –

उत्तर

28

मुझे "समाधान" मिलता है। उपकरण आप चल रहे हैं की एपीआई संस्करण के लिए targetVersion

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

इसे से हटा दें? – CommonsWare

+0

मैंने अपना जवाब संपादित किया। उम्मीद है कि यह – Cocorico

+4

हम्मम की मदद करेगा ... जबकि यह शायद काम करता है, यह वास्तव में "समाधान" से अधिक कामकाज है। डेवलपर एंड्रॉइड 5.0 और उच्च उपकरणों पर उस विधि का उपयोग करना चाह सकते हैं। एक विधि को ओवरराइड करना जो एक पुराना एपीआई स्तर सामान्य रूप से कॉल नहीं करता है, कोई समस्या नहीं है। ओटो, क्योंकि यह विधियों पर पुनरावृत्ति कर रहा है, इस परिदृश्य से निपटने के लिए अपवाद हैंडलिंग होना चाहिए, आईएमएचओ। – CommonsWare

0

बदलें: बस आपकी गतिविधि के अनुसार इस समारोह को हटा दें।

मेरे पास targetVersion = 21 था जब मेरे डिवाइस में 4.4 (एपीआई 1 9) था, इस मुद्दे को हल करने के लिए मूल्य को बदलकर 1 9।

0

मुझे सैमसंग गैलेक्सी 3mini और स्थानीय ऑपरेटर फोन पर एक ही समस्या थी। लेकिन मैंने ओवरराइड गतिविधि विधि के साथ तय किया। मुझे उम्मीद है कि यह आपके लिए काम करेगा।

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    try { 
     BusApplication.getInstance().register(this); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
संबंधित मुद्दे