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

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

ответ

12

Метод автоматически создает файл с указанным именем, поэтому его не нужно создавать. Фактически, точное местоположение и имя этого файла предпочтения не задокументированы, поэтому я бы посоветовал вам не полагаться на некоторые соглашения при попытке установить access this file directly, так как местоположение и имя могут быть изменены в будущем - SharedPreferences должен быть единственным способом для доступа к этому файлу.

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

2

Я не уверен, что вы здесь говорите на 100%.

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

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

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

+1

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

+0

Я считаю, что он создается либо при первом появлении PreferenceScreen, либо когда элемент в PreferenceScreen сначала задан пользователем. Как я уже говорил, я не совсем уверен в этом. – Knossos

+0

да .. Я думаю, что ты прав! – Smitha

-4

Вы должны установить намерение предпочтительной деятельности в onCreateOptionMenu.

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 

    return super.onCreateOptionsMenu(menu); 
} 


public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) 
    { 
     case R.id.setting: 
      startActivity(new Intent(this,Settingpage.class)); 
      Toast.makeText(this, "setting clicked", Toast.LENGTH_LONG).show(); 
      break; 
    } 
    return true; 
} 
+0

Это не похоже на то, что он вообще имеет отношение к вопросу. –

0

В Shared Preferences будут созданы под /data/data/appname/shared_prefs/prefs_name.xml

0

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

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

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

Например:

Activity.getPreferences() метод

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

Смежные вопросы