0

私は、EditTextPreferenceの値を要約フィールドに表示できるようにします。具体的には、これをPreferenceFragmentCompat内で実行したいと考えています。要約でEditTextPreferenceの現在の値を表示

import android.support.v7.preference.PreferenceFragmentCompat; 

public class SettingsFragment extends PreferenceFragmentCompat { 

    @Override 
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 

環境設定ファイルには、次のようになります。私は他のソリューションを見てきましたが、それらのどれもPreferenceFragmentCompat以内にこれを行う方法を含まない

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <EditTextPreference 
     android:defaultValue="DEVICE01" 
     android:key="device_id" 
     android:title="Device ID" /> 
</PreferenceScreen> 

答えて

1

私は、それがすべてのシンプルPreferenceFragmentと同様だと思う:grabarz121 @からの答えが正しい方向に私を設定

EditTextPreference editTextPreference = (EditTextPreference) findPreference(YOUR_PREFERENCE_KEY); 
    editTextPreference.setSummary(sharedPreferences.getString(YOUR_PREFERENCE_KEY, defaultValue)); 
    editTextPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
     @Override 
     public boolean onPreferenceChange(Preference preference, Object o) { 

      String yourString = o.toString(); 
      sharedPreferences.edit().putString(YOUR_PREFERENCE_KEY, yourString).apply(); 
      editTextPreference.setSummary(yourString); 

      return true; 
     } 
    }); 
0

:XMLファイルに :コードで

android:summary="@string/your_string_resource" 

public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { 
    addPreferencesFromResource(R.xml.preferences); 
    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext()); 
    setDeviceIdSummary(); 
} 

public void setDeviceIdSummary() { 
    final String deviceIdKey = getString(R.string.pref_device_id_key); 
    String deviceIdDefault = getString(R.string.pref_device_id_default); 
    String deviceIdValue = sharedPreferences.getString(deviceIdKey, deviceIdDefault); 

    final EditTextPreference editTextPreference = (EditTextPreference) findPreference(deviceIdKey); 
    editTextPreference.setSummary(deviceIdValue); 

    editTextPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
     @Override 
     public boolean onPreferenceChange(Preference preference, Object o) { 

      String newValue = o.toString(); 
      sharedPreferences.edit().putString(deviceIdKey, newValue).apply(); 
      editTextPreference.setSummary(newValue); 
      return true; 
     } 
    }); 
} 

android:summary="@string/pref_device_id_summary" 

これは私が/修正SettingsFragmentクラスに追加するものです。これは私が好みに追加するものです

関連する問題