2016-05-30 4 views
0

私はアプリケーションの背景色を変更しようとしています。また、テーマを介してフォントの種類を変更する際に、環境設定が変更されました。OnSharedPreferenceChangeListenerは動作しませんか?

これまでのところ、私は環境設定を行っていますが、リスナーを置くと、呼び出されません。私はそれが表示されるかどうかを確認するためにトーストを使ってテストしています。

マイコード:私が働いたソリューションのいずれも、上記のように、コードにはchangeListenerですがありません

package alertssystem.lsa13tafeproj.lsa13.resistorcalculator; 

import android.app.ActionBar; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.preference.PreferenceActivity; 
import android.preference.PreferenceFragment; 
import android.preference.PreferenceManager; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 

import java.util.prefs.PreferenceChangeEvent; 
import java.util.prefs.PreferenceChangeListener; 

public class Prefs extends PreferenceActivity 
{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferencesFragment()).commit(); 
    } 



    @Override 
    public void onBackPressed() 
    { 
     Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
     startActivity(intent); 
    } 

    public static class PreferencesFragment extends PreferenceFragment 
    { 
     @Override 
     public void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      addPreferencesFromResource(R.xml.prefs); 
     } 
    } 
} 

、誰かが私はこれに、これを実装する方法を教えてくださいすることができます。

ユーザーがListPreferenceをクリックし、2つのオプションがありますが、新しいオプションが選択されても何も起こりません。

答えて

0

これが私の作品:

public class MyPreferenceFragment extends PreferenceFragment implements 
    OnSharedPreferenceChangeListener { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.prefs); 
     PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(this); 
    } 

    @Override 
    public void onDestroy() { 
     PreferenceManager.getDefaultSharedPreferences(getActivity()).unregisterOnSharedPreferenceChangeListener(this); 
     super.onDestroy(); 
    } 

    @Override 
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
     // Toast 
    } 
} 

は、あなたがあなたがそれまでの登録を解除県の変更ではなく、前にリスナーを登録していることを確認します。

+1

あなたは伝説です!本当にありがとう。 すぐに正しいとマークしてくれます。 :) –

関連する問題