2012-05-08 80 views
0

我有這樣的例外,我在我的崩潰報告得到安卓Android - 共享首選項在某些設備上崩潰。

java.lang.NoSuchMethodError: android.content.SharedPreferences$Editor.apply 
at com.problemio.ProblemioActivity.first_time_check(ProblemioActivity.java:231) 
at com.problemio.ProblemioActivity.onCreate(ProblemioActivity.java:47) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4668) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636) 
at dalvik.system.NativeStart.main(Native Method) 

我非常新的Android中的崩潰報告系統。爲什麼會發生這種事故?我無法在我的設備或模擬器上重現它。

崩潰報告需要其他信息來確定原因以及如何解決此問題?

謝謝!

回答

4

apply()在API級別9中引入,並且某些運行您的應用的設備可能使用較低版本。考慮將此呼叫更改爲commit。正如文檔中所述:

SharedPreferences.Editor接口預計不會是 直接實現。但是,如果您之前確實執行了此操作,並且 現在正在獲取有關缺少apply()的錯誤,則可以僅從apply()中調用 commit()。

+0

謝謝 - 我曾經承諾,但我記得它並不是每次都非常持久地保存數據。這樣做的好實踐方式是什麼,以便我可以使數據永久保存並且不會崩潰?謝謝! – Genadinik

+0

如果你在使用'commit'時遇到了問題,這可能是一個很好的單獨問題,但只要你支持較低的API級別,你幾乎必須使用commit ... – MByD

+0

謝謝,在文檔中,它們是什麼意思「你可以調用提交從應用?「 – Genadinik