使用PreferenceActivity时,如何获取ListPreference中选中的值

来源:互联网 发布:黑页html源码 编辑:程序博客网 时间:2024/05/18 01:28

汗~~~研究了一天,貌似ListPreference中根本就没有什么回调函数可以用
于是,向上一层,把注意力集中于SharedPreferences,
发现有这么个接口:onSharedPreferenceChanged
抱着试试看的态度,实现了该接口,发现此方法可行,先将部分代码分享如下:
package yinger.firewall;

import Android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;

public class CallFireWall extends PreferenceActivity implements
        OnSharedPreferenceChangeListener {
    ListPreference lp = null;
    String whiteMode = "1";
    String blackMode = "2";

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
        this.setTitle("Ying_er" + "  Call Safe");
        SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(this);
        prefs.registerOnSharedPreferenceChangeListener(this);
        lp = (ListPreference) findPreference(getString(R.string.pref_mode_key));
    }

    @Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
            Preference preference) {
        // TODO Auto-generated method stub
        return super.onPreferenceTreeClick(preferenceScreen, preference);
    }
   
    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
            String key) {
        // TODO Auto-generated method stub
        System.out.println("onSharedPreferenceChanged");
        if (key == getString(R.string.pref_mode_key)){
            System.out.println(lp.getValue());
            if(lp.getValue().equals(whiteMode)){
               
            }
        }
    }
}
注意:该事件需要注册。既:
prefs.registerOnSharedPreferenceChangeListener(this);

0 0