Когда файл общих настроек создается впервые? - PullRequest
6 голосов
/ 05 марта 2012

Я хотел бы знать, когда файл общих настроек создается впервые?

У меня есть следующий код:

<?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 () с именем файла? Я не знаю, должен ли я сначала создать этот файл и поместить его в каталог данных приложения?

Я имел в виду, Когда файл общих настроек создается впервые: когда приложение установлено или через некоторое время? Если позже, когда?

Ответы [ 4 ]

13 голосов
/ 05 марта 2012

Метод getSharedPreferences(name, mode) автоматически создает файл с указанным именем, поэтому вам не нужно его создавать.На самом деле, точное местоположение и имя этого файла настроек не задокументированы, поэтому я бы посоветовал вам не полагаться на некоторые соглашения при попытке доступа к этому файлу напрямую , так как местоположение и имя могут быть измененыв будущем - SharedPreferences должен быть единственным способом доступа к этому файлу.

Файл настроек с определенным именем создается при первом вызове getSharedPreferences(name, mode) или addPreferencesFromResource(preferencesResId).

2 голосов
/ 05 марта 2012

Я не уверен на 100%, о чем вы говорите.

Вам не нужно создавать какие-либо файлы при работе с PreferenceScreens или SharedPreferences.Это обрабатывается SharedPreferences за кулисами.Я полагаю, что это происходит, когда вы впервые устанавливаете значение на экране настроек, но я, честно говоря, не уверен.

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

Этот код получит SharedPreferences для вашего PreferenceScreen после их установки.Если они не были установлены, вы используете значения по умолчанию.

0 голосов
/ 10 июля 2017

Как уже упоминалось в других комментариях, вы никогда не будете напрямую взаимодействовать с файлами общих настроек.Вы читаете и записываете в них значения, используя объект SharedPreferences.Метод Context.getSharedPreferences() принимает строку в качестве первого аргумента (имя файла общих настроек, с которым вы хотите взаимодействовать) и возвращает объект SharedPreferences.Согласно документации для метода getSharedPreferences():

Если файл настроек с таким именем не существует, он будет создан при извлечении редактора (SharedPreferences.edit()) и затем зафиксируйте изменения (Editor.commit ()).

Итак, это при создании файла общих настроек.Другие методы, которые возвращают объекты SharedPreferences, просто выполняют одно и то же в разных контекстах.

Например:

Метод Activity.getPreferences()

просто вызывает базовый метод getSharedPreferences (String, int), передавая имя класса этого действия в качестве имени предпочтения.

0 голосов
/ 03 августа 2015

Общие настройки будут созданы в /data/data/appname/shared_prefs/prefs_name.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...