1

Switchをクリックするたびに変更したいのでandroid:title="Title"を使用してタイトルを付けることをしていないSwitchPreferenceがあるPreferenceActivityと一緒に働いています。SwitchPreferenceタイトルをクリックしたときに変更する方法

私はこの方法を試しましたが、うまくいきませんでした。自分の問題を解決せずにSOの関連トピックを検索しました。

public class PrefsFragment extends PreferenceFragment { 

    private SwitchPreference pref; 

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

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

     pref = (SwitchPreference)findPreference("SWITCH"); 
     pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 

      @Override 
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       if (newValue.toString().equals("SWITCH")) { 
        boolean test = (Boolean) newValue; 
        if (test) { 
         pref.setTitle("ChangedTitle"); 
        } else { 
         pref.setTitle("DefaultTitle"); 
        } 
       } 

       return true; 
      } 
     }); 
    } 
} 

settings.xmlは:

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

    <PreferenceCategory 
     android:title="Settings"> 

     <ListPreference 
      android:key="yourPref" 
      android:title="Title" 
      android:dialogTitle="Select" 
      android:summary="%s" 
      android:defaultValue="4" 
      android:entries="@array/titles" 
      android:entryValues="@array/values"/> 

    </PreferenceCategory> 

    <PreferenceCategory 
     android:title="Title"> 

     <SwitchPreference 
      android:key="SWITCH"/> 

    </PreferenceCategory> 
</PreferenceScreen> 

あなたは私に助けてくださいもらえますか?

答えて

0

pref.setTitle"YOUR TEXT");ではなく、リスナーコールバック内でpreference.setTitle("YOUR TEXT");を呼び出してみてください。リスナーは、変更された環境設定を渡しています。

+0

変更なし私はxmlファイルも投稿しました – Pier

+0

あなたは 'setSummary()'ではなく 'setTitle()'を呼んでいますか? –

+0

はい、_setTitle()_を追加したいと思います。しかし、ちょうど知っている... _setSummary()_でも私は変更を取得しません – Pier

関連する問題