1

私はアンドロイド開発の初心者で、設定アクティビティを実装してユーザー設定を取得できるようにしようとしています。これは、編集設定の変更を処理するコードが既に含まれている設定アクティビティです。モジュールは Android 3.0 以降に実装されているため、設定フラグメントが使用されます。

public class SettingsActivity extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit();
}

public static class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.pref_general);
    }

    @Override
    public void onResume(){
        super.onResume();
        getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onPause(){
        super.onPause();
        getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key){
        if(key.equals("location")){
            Preference loc_preference=findPreference("location");
            loc_preference.setSummary(sharedPreferences.getString(key,""));
        }
    }
}

}

これは pref_gen.xml ファイルです

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

<EditTextPreference
    android:key="@string/pref_loc_key"
    android:dialogMessage="@string/location_dialog_message"
    android:dialogTitle="@string/location_dialog"
    android:title="@string/pref_loc_label"
    android:defaultValue="@string/pref_default_loc"
    android:selectAllOnFocus="true"
    android:singleLine="true" />

<ListPreference
    android:key="@string/pref_unit_key"
    android:dialogTitle="@string/unit_dialog_message"
    android:title="@string/pref_unit_label"
    android:defaultValue="@string/pref_default_unit"
    android:entries="@array/pref_unit_options"
    android:entryValues="@array/pref_unit_values" />

これはarrays.xmlファイルです

<string-array name="pref_unit_options">
    <item>Metric</item>
    <item>Imperial</item>
</string-array>
<string-array name="pref_unit_values">
    <item>1</item>
    <item>0</item>
</string-array>

リスナーと一緒に Settings Fragment メソッドに List Preference モジュールを追加するのを手伝ってくれる人はいますか? 私は他の投稿を調べましたが、どういうわけかそれに応じて変更できません。

4

1 に答える 1