У меня была такая же проблема. К счастью, у меня был доступ к устройству, и это помогло мне найти проблему. Прежде всего, я изучил файл журнала и обнаружил ошибку:
W/SharedPreferencesImpl(31354): org.xmlpull.v1.XmlPullParserException: Map value without name attribute: string
Итак, файл настроек каким-то образом поврежден. Я сделал файл настроек общедоступным в своем приложении:
SharedPreferences prefs = context.getSharedPreferences("main", Context.MODE_WORLD_READABLE);
Затем я вытаскиваю файл с устройства на компьютер
adb pull data/data/my.package.name/shared_prefs/main.xml c:\main.xml
и проверьте содержимое файла настроек:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string>Paris,France</string>
<string name="HideStatusBar">1</string>
Первый параметр не имеет атрибута "name". Я проверил код и обнаружил, что в некоторых случаях первые параметры записывались следующим образом:
SharedPreferences.Editor e = _Prefs.edit();
e.putString(null, paramValue);
e.commit()
Имя было пустым . Я исправил ошибку, и проблема исчезла. Итак, банальная ошибка может полностью испортить файл настроек.