您的位置:首页 > Web前端

PreferenceActivity 学习

2015-08-10 11:01 393 查看
学习了Preference Activity。某度上查找若干文章,查看人家若干代码,并学习了android自带setting sample code。终于有点明白。

下面是参考的code。当share preference有所改变的时候,会监听到其变化,可以做相应的动作。

</pre><pre name="code" class="java">public class PreferenceActivityTest extends PreferenceActivity implements
OnPreferenceChangeListener, OnPreferenceClickListener {
static final String TAG = "[PreferenceActivityTest]";
private static final String APPVersion = "0.00.01";
private static final String FirmwareVersion = "0.00.02";

/** 自定义布局A **/
static Preference preference0 = null;

/** 自定义布局B **/
static Preference preference1 = null;

/** 自定义update2布局 **/
static Preference preference2 = null;

/** 自定义update3布局 **/
static Preference preference3 = null;
static Preference preference4 = null;
static Preference preference5 = null;
static Preference preference6 = null;
static Preference preference7 = null;

private static SharedPreferences mPreferences = null;
private static SharedPreferences.Editor editor = null;
private static SharedPreferences.OnSharedPreferenceChangeListener mPreferencesListener = null;

private SharedPreferences mSharedPreferences;

Context mContext = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate");
// 该方法用于为该界面设置一个标题按钮
if (hasHeaders()) {
Button button = new Button(this);
button.setText("保存更新");
button.setWidth(10);
// 将该按钮添加到该界面上
setListFooter(button);
}

mPreferences = PreferenceManager
.getDefaultSharedPreferences(this);
editor = mPreferences.edit();

// initPreferences();

}

@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume");
// 为PreferenceActivity中的选项记录的SharedPreferences值被存在app沙箱中,
// 这使得任何app组件都可以访问它(Activity/Service/BroadcastReceiver)

mPreferencesListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(
SharedPreferences sharedPreferences, String key) {
if ("Playersetting".equals(key))
Log.d(TAG, "onSharedPreferenceChanged--key:"+key);
else
Log.d(TAG, "onSharedPreferenceChanged--other key:"+key);
}
};

// 需要注册哦
mPreferences.registerOnSharedPreferenceChangeListener(mPreferencesListener);

}

@Override
public void onPause() {
super.onPause();
Log.d(TAG, "onPause");

mPreferences.unregisterOnSharedPreferenceChangeListener(
mPreferencesListener);
mPreferencesListener = null;
}

private void initPreferences() {

}

// 重写该该方法,负责加载页面布局文件
@Override
public void onBuildHeaders(List<Header> target) {
// 加载选项设置列表的布局文件
loadHeadersFromResource(R.xml.preference_headers, target);
}

public static class Prefs1Fragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// PreferenceManager.setDefaultValues(getActivity(),R.xml.advanced_preferences,
// false);

addPreferencesFromResource(R.xml.preference_player);// preferences

preference6 = findPreference("Playersetting");
preference7 = findPreference("Mute");

//preference6.setOnPreferenceChangeListener((OnPreferenceChangeListener) mPreferencesListener);
//preference7.setOnPreferenceClickListener(this);
}

}

public static class Prefs2Fragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_wifi);// display_prefs);//
// 获取传入该Fragment的参数
String website = getArguments().getString("website");
Toast.makeText(getActivity(), "网站域名是:" + website, Toast.LENGTH_LONG)
.show();
}
}

/**
*
* @author James
* Update Fragment
*
*/
public static class Prefs3Fragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_update);// preferences

Log.d(TAG, "Prefs3Fragment onCreate");

preference2 = findPreference("App_version");
preference2.setSummary(APPVersion);
//preference2.setDefaultValue(APPVersion);
editor.putString("App_version",APPVersion);
editor.commit();

preference3 = findPreference("Firmware_version");
preference3.setSummary(FirmwareVersion);
//preference3.setDefaultValue(FirmwareVersion);
editor.putString("Firmware_version",FirmwareVersion);
editor.commit();
}
}

/**
*
* @author James
* self update
*/
public static class Prefs4Fragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// addPreferencesFromResource(R.xml.preference_update);//preferences

// 从资源文件中添Preferences ,选择的值将会自动保存到SharePreferences
addPreferencesFromResource(R.xml.self_update);

preference0 = findPreference("pref_key_0");
preference0.setSummary("0.01");
preference0.setDefaultValue("0.01");

preference0
.setOnPreferenceClickListener(new OnPreferenceClickListener() {

@Override
public boolean onPreferenceClick(Preference preference) {
return false;
}
});

preference1 = findPreference("pref_key_1");
preference1.setSummary("0.02");
preference1.setDefaultValue("0.02");

preference1
.setOnPreferenceClickListener(new OnPreferenceClickListener() {

@Override
public boolean onPreferenceClick(Preference preference) {
return false;
}
});

}
}

/**
*
* @author James
* log
*/
public static class Prefs5Fragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_log);// preferences

}
}

@Override
public boolean onPreferenceClick(Preference preference) {
Log.d(TAG, "onPreferenceClick!!");
return false;
}

@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
Log.d(TAG, "onPreferenceChange##");
return false;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android