我正在尝试制作游戏。现在对于我需要保留的一些数据(音乐,效果,背景/我)我想使用preferences
。
我创建了名为xml
preferences.xml
文件
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<EditTextPreference android:key="music" android:title="Some title" android:defaultValue="true"/>
</PreferenceScreen>
然后我转到该位置(具有root权限)并且data/data/my.app.folder/
中只有lib文件夹。没有shared_prefs
文件夹。
当我尝试访问首选项时,它为null。我尝试使用getSharedPreferences()
和PreferenceManager.getDefaultSharedPreferences()
。可能是什么原因?
此外,我没有preferences
的活动,我想手动管理它们。
我如何克服这个问题?
答案 0 :(得分:1)
要使用共享首选项,您必须先创建它。像这样:
SharedPreferences prefs = getApplicationContext().getSharedPreferences(
"music", Context.MODE_PRIVATE);
首次在其中创建偏好:
final String BACKGROUND_DEFAULT_VALUE = "on";
final String DEFAULT_TITILE = "";
final String TITILE_KEY = "title";
final String BACKGROUND_KEY = "background_key";
Editor editor= prefs.edit();
editor.putString(TITILE_KEY, DEFAULT_TITILE);
editor.putString(BACKGROUND_KEY, BACKGROUND_DEFAULT_VALUE);
editor.commit();
比编辑/并保存其中的偏好:
Editor editor= prefs.edit();
editor.putString(TITILE_KEY, "new title");
editor.putString(BACKGROUND_KEY, "new background value i.e on/off");
editor.commit();
比阅读首选项:
String background_value = prefs.getString(BACKGROUND_KEY);
String title_value = prefs.getString(TITILE_KEY );
您可以在位置看到您的共享偏好文件,它会在创建后显示在那里。
/data/data/<packagename>/shared_prefs/music.xml
有关更多详细信息和帮助,android sdk的示例目录包含检索和删除共享首选项的示例。它位于:
<android-sdk-home>/samples/android-<platformversion>/ApiDemos directory
希望它有所帮助。
答案 1 :(得分:0)
有两种与首选项相关的不同类型的xml文件。 您要显示的是表示首选项层次结构(屏幕表示)的xml资源文件。 第二个是包含实际键值对的文件。 创建第一个不会创建第二个。您实际上需要使用PreferenceActivity(或Fragment等效或您自己的显示方法显示文件 - 据我所知 - 您打算这样做)或者您必须在代码中创建首选项。