共享首选项文件是什么时候创建的?

6

我想知道共享首选项文件何时首次创建?

我有以下代码:

<?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()带有文件名的方法?我不知道是否需要先创建此文件并将其放置在应用程序的数据目录中?
我的意思是:共享首选项文件是什么时候首次创建的:安装应用程序时还是以后某个时间?如果以后,那么是什么时候创建的?
5个回答

15

getSharedPreferences(name, mode)方法会自动创建指定名称的文件,因此您不需要自己创建。实际上,这个偏好设置文件的确切位置和名称没有记录在案,所以我建议您不要依赖一些惯例来直接访问此文件,因为位置和名称可能会在将来改变 - SharedPreferences 应该是访问此文件的唯一方式。

当第一次调用getSharedPreferences(name, mode)addPreferencesFromResource(preferencesResId)时,会创建具有特定名称的偏好设置文件。


2

我不完全确定你在这里说的是什么。

处理PreferenceScreens或SharedPreferences时,您不需要创建任何文件。这由SharedPreferences在幕后处理。我认为这发生在您首次设置Preference屏幕中的值时,但老实说我不确定。

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
String username = preferences.getString("username", "defaultvalue");
String password = preferences.getString("password", "defaultvalue");

一旦设置了PreferenceScreen,该代码将获取SharedPreferences。如果它们尚未被设置,则使用默认值。


1
谢谢。我的意思是:共享首选项文件最初是何时创建的?是在应用程序安装时还是稍后?如果是稍后,那么是在什么时候? - Smitha
我相信它是在首次出现PreferenceScreen时创建的,或者当PreferenceScreen中的项目首次被用户设置时创建的。正如我之前所说,我并不完全确定。 - Knossos

1
如其他评论所述,您永远不会直接与共享偏好文件进行交互。您可以使用SharedPreferences对象读取和写入其中的值。Context.getSharedPreferences()方法将字符串作为其第一个参数(您要与之交互的共享偏好文件的名称)并返回SharedPreferences对象。根据getSharedPreferences()方法的文档,如果不存在此名称的首选项文件,则在检索编辑器(SharedPreferences.edit())然后提交更改(Editor.commit())时将创建它。因此,当提交更改时创建共享偏好文件。其他返回SharedPreferences对象的方法只是在不同的上下文中执行相同的操作。例如,Activity.getPreferences()方法只是通过将此活动的类名作为首选项名称传递给底层的getSharedPreferences(String, int)方法来调用它。

0

Shared Preferences 会被创建在 /data/data/appname/shared_prefs/prefs_name.xml 下


0
每当我们调用方法 getSharedPreferences("file_name", mode) 时,它会检查与我们提供的文件名对应的 XML 文件是否已经存在,如果已经存在,则会将其用于我们正在执行的操作,否则它将创建一个新文件并使用我们提供的名称。
我们可以在 Android Studio 设备文件浏览器中的 data/data//shared_prefs 文件夹中检查此文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接