2012-05-08 65 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