2016-07-26 27 views
0

EditTextPreferenceの値を要約に入れようとしています。誰かが私にこれを行う方法を教えてもらえますか?私のOnSharedPreferenceChangeListenerが動作しているようには見えません。PreferenceFragmentCompatが環境設定の変更を認識しない

import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.support.v7.preference.Preference; 
import android.support.v7.preference.PreferenceFragmentCompat; 
import android.util.Log; 


public class OptionsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener{ 

    private SharedPreferences sharedPreferences; 

    @Override 
    public void onCreatePreferences(Bundle savedInstanceState, String s) { 
     // Adds preferences. See xml.preferences. 
     addPreferencesFromResource(R.xml.preferences); 

    } 

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
              String key) { 

     if (key.equals("user_id")) { 
      Log.v("user_id", "is found"); 
      Preference connectionPref = findPreference(key); 
      // Set summary to be the user-description for the selected value 
      connectionPref.setSummary(sharedPreferences.getString(key, "")); 
     } 
    } 
} 

マイあるpreferences.xml:

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

<CheckBoxPreference 
    android:key="gps_sync" 
    android:title="@string/gps_sync" 
    android:summary="@string/gps_sync_summ" 
    android:defaultValue="true"/> 

<EditTextPreference 
    android:key="user_id" 
    android:title="@string/user_id" 
    android:summary=" "/> 

+0

あなたが役に立った場合は、正しい答えとして回答を受け入れることを検討してください – SoroushA

答えて

2

あなたはそれを動作させるために最初のリスナーを登録する必要があります。

public class OptionsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener 

@Override 
protected void onResume() { 
    super.onResume(); 

    getPreferenceScreen().getSharedPreferences() 
      .registerOnSharedPreferenceChangeListener(this); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 

    getPreferenceScreen().getSharedPreferences() 
      .unregisterOnSharedPreferenceChangeListener(this); 
} 

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) 
{ 
    //Your Code 
} 
関連する問題