-1

onCreate メソッドに次のコードを含むメイン アクティビティがあります。

PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
SharedPreferences prefs=MainActivity.this.getSharedPreferences("com.qerq.helloworldproject.PreferencesActivity", Activity.MODE_PRIVATE);
String editText=prefs.getString("edit_text", "default_edit_text_value");
boolean checkBox=prefs.getBoolean("check_box", true);
String list=prefs.getString("list", "default_list_value");

Log.i("edit_text_value", editText);
Log.i("check_box_value", String.valueOf(checkBox));
Log.i("list_value", list);

また、PreferencesActivity の xml レイアウトがあります。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:key="first_screen_key"
        android:summary="First summary"
        android:title="First title" >
        <CheckBoxPreference
            android:persistent="true"
            android:title="Check Box Title"
            android:key="check_box_key"
            android:defaultValue="false"/>
        <ListPreference 
            android:persistent="true"
            android:title="List Title"
            android:key="list_key"
            android:entries="@array/entries"
            android:defaultValue="second_value"
            android:entryValues="@array/entries_values"/>
        <EditTextPreference 
            android:persistent="true"
            android:title="Edit Text Title"
            android:key="edit_text_key"
            android:defaultValue="Edit Text Value"/>
    </PreferenceCategory>

</PreferenceScreen>

しかし、常にコードから常にデフォルト値のみを取得します! PreferencesActivity を使用して値を変更する必要がありますが、MainActivity のソース コードから値を取得する必要もあります。どうすればいいですか?

4

1 に答える 1

3

Aは、名前でアクセスする必要のないデフォルトPreferenceActivityに設定を保存します。次の行を変更します... SharedPreferences

SharedPreferences prefs=MainActivity.this.getSharedPreferences("com.qerq.helloworldproject.PreferencesActivity", Activity.MODE_PRIVATE);

...に...

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
于 2013-02-16T17:36:15.330 に答える