我想知道什么时候第一次创建共享首选项文件?
我有以下代码:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="User settings">
<EditTextPreference android:title="User Name"
android:key="userName" android:summary="Please Enter User Name"></EditTextPreference>
<EditTextPreference android:title="Password"
android:key="password" android:summary="Password Here"
android:inputType="textPassword"></EditTextPreference>
</PreferenceCategory>
</PreferenceScreen>
public class PrefsActivity extends PreferenceActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.prefs);
}
}
另外,我如何使用带文件名的getSharedpreference()?我不知道是否必须先创建此文件并将其放在app的数据目录中?
我的意思是什么时候首次创建共享首选项文件:安装应用程序时,还是以后某个时间?如果以后,什么时候?
答案 0 :(得分:13)
getSharedPreferences(name, mode)
方法会自动创建指定名称的文件,因此您无需创建它。实际上,没有记录此首选项文件的确切位置和名称,因此我建议您在尝试access this file directly时不要依赖某些约定,因为将来可能会更改位置和名称 - {{ 1}}应该是访问此文件的唯一方法。
首次调用SharedPreferences
或addPreferencesFromResource(preferencesResId)
时,会创建具有特定名称的首选项文件。
答案 1 :(得分:2)
我不是100%肯定你在这里谈论的是什么。
在处理PreferenceScreens或SharedPreferences时,您不需要创建任何文件。这是由幕后的SharedPreferences处理的。我相信当您首次在“首选项”屏幕中设置一个值时会发生这种情况,但老实说我不确定。
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
String username = preferences.getString("username", "defaultvalue");
String password = preferences.getString("password", "defaultvalue");
一旦设置了PreferenceScreen,该代码就会获得SharedPreferences。如果尚未设置,则使用默认值。
答案 2 :(得分:0)
共享首选项将在/data/data/appname/shared_prefs/prefs_name.xml下创建
答案 3 :(得分:0)
正如其他评论中所提到的,您永远不会直接与共享偏好文件进行交互。您可以使用SharedPreferences对象读取和写入值。 Context.getSharedPreferences()
方法接受一个字符串作为其第一个参数(您要与之交互的共享首选项文件的名称)并返回一个SharedPreferences
对象。根据{{3}}
如果不存在此名称的首选项文件,则在检索编辑器(SharedPreferences.edit())然后提交更改(Editor.commit())时将创建该文件。
创建共享首选项文件时 。返回SharedPreferences对象的其他方法只是在不同的上下文中做同样的事情。
例如:
documentation for the getSharedPreferences()
method:方法
通过将此活动的类名称作为首选项名称传递,简单地调用底层的getSharedPreferences(String,int)方法。
答案 4 :(得分:0)
每当我们调用方法 getSharedPreferences("file_name", mode) 它将检查与我们提供的文件名对应的 xml 文件是否已经存在,如果已经存在,它将使用现有的文件进行我们正在执行的操作,否则它将创建一个名为我们的新文件提供
我们可以在Android studio Device File Explorer->data/data/