何时首次创建共享首选项文件?

时间:2012-03-05 06:43:17

标签: android sharedpreferences

我想知道什么时候第一次创建共享首选项文件?

我有以下代码:

<?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的数据目录中?

我的意思是什么时候首次创建共享首选项文件:安装应用程序时,还是以后某个时间?如果以后,什么时候?

5 个答案:

答案 0 :(得分:13)

getSharedPreferences(name, mode)方法会自动创建指定名称的文件,因此您无需创建它。实际上,没有记录此首选项文件的确切位置和名称,因此我建议您在尝试access this file directly时不要依赖某些约定,因为将来可能会更改位置和名称 - {{ 1}}应该是访问此文件的唯一方法。

首次调用SharedPreferencesaddPreferencesFromResource(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//shared_prefs文件夹中查看这个文件