Android: общие настройки аварийно завершают работу на некоторых устройствах.

У меня есть это исключение, которое я получаю в своих отчетах о сбоях с 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. Почему произошел этот сбой? Я не могу воспроизвести это на своем устройстве или симуляторе.

Какая еще информация нужна из отчета о сбое, чтобы определить причину и как это исправить?

Спасибо!


person Genadinik    schedule 08.05.2012    source источник


Ответы (2)


apply() появился на уровне API 9. , а некоторые устройства, на которых выполняется ваше приложение, могут иметь более раннюю версию. рассмотрите возможность изменения этого вызова на commit. Как указано в документах:

Интерфейс SharedPreferences.Editor не предполагается реализовывать напрямую. Однако, если вы уже реализовали его ранее и теперь получаете ошибки об отсутствии apply(), вы можете просто вызвать commit() из apply().

person MByD    schedule 08.05.2012
comment
Спасибо - у меня была фиксация раньше, но я помню, что данные не сохранялись каждый раз очень постоянно. Каков наилучший способ сделать это, чтобы я мог сохранить данные навсегда, а также не сбой? Спасибо! - person Genadinik; 08.05.2012
comment
Если у вас были проблемы с commit, это может быть хороший отдельный вопрос, но пока вы поддерживаете более низкие уровни API, вам в значительной степени приходится использовать фиксацию... - person MByD; 08.05.2012
comment
спасибо, в документации, что они означают, что вы можете вызвать фиксацию из применения? - person Genadinik; 08.05.2012
comment
Насколько я понимаю, должно быть вместо - person MByD; 08.05.2012

Прочтите документацию:

http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#apply()

Посмотрите на версию API, с которой он был запущен.

person JoxTraex    schedule 08.05.2012