大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
PreferenceFragment
Android应用程序通常要提供首选项,以允许用户定制应用程序。
例如,可以允许用户保存那些用于访问Web资源的登录凭据, 等等。
在Android中,可以使用PreferenceActivity基类为用户显示一个用于编辑首选项的活动。
在Android 3.0和更高版本中,可以使用PreferenceFragment类实现相同的功能。// XML
// 新建 (res/xml/preferences.xml)
android:key=”child_checkbox_preference”
android:summary=”这是一个可见的子类”
android:title=”子类复选框首选项”
android:summaryOn=”已开启”
android:summaryOff=”已关闭”
android:onClick=”onClick”/>
// Activit
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 替换 Fragment
getFragmentManager().beginTransaction()
.replace(R.id.xxx, new MyPreference())
.commit();
}
// PreferenceFragment
class MyPreference extends PreferenceFragment {
// 监听 Preference Click
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
Log.i(“INFO”, preference.getKey());
// 也可以通过 KEY 获取
// findPreference(“child_checkbox_preference”)
if (preference.getKey().equals(“child_checkbox_preference”)) {
CheckBoxPreference child_checkbox_preference = (CheckBoxPreference) preference;
Toast.makeText(MainActivity.this, String.valueOf(child_checkbox_preference.isChecked()), Toast.LENGTH_SHORT).show();
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// 添加 Preferences XML
addPreferencesFromResource(R.xml.preferences);
// 选项监听 …
// findPreference(“child_checkbox_preference”).setOnPreferenceClickListener(…);
// 选项监听 当 Preference 的值发生改变时触发该事件,true则以新值更新控件的状态,false 则 不保存
findPreference(“child_checkbox_preference”).setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// 返回 false 修改不会生效
return false;
}
});
/*
// 获取 Preferences Manager
PreferenceManager manager = getPreferenceManager();
// 获取 选项状态
CheckBoxPreference child_checkbox_preference = (CheckBoxPreference) manager.findPreference(“child_checkbox_preference”);
// …
Toast.makeText(MainActivity.this, String.valueOf(child_checkbox_preference.isChecked()), Toast.LENGTH_SHORT).show();
*/
}
public void onClick() {
Toast.makeText(MainActivity.this, “成功”, Toast.LENGTH_SHORT).show();
}
}
}
xmlns:android=”http://schemas.android.com/apk/res/android”>
android:title=”显示一排偏好”>
android:key=”checkbox_preference”
android:title=”开关偏好”
android:summary=”这是一个开关按钮” />
android:title=”基于对话框的偏好”>
android:key=”edittext_preference”
android:title=”文本输入偏好”
android:summary=”使用一个文本框对话框”
android:dialogTitle=”输入你的宠物” />
android:key=”list_preference”
android:title=”列表偏好”
android:summary=”使用一个列表对话框”
android:entries=”@array/entries_list_preference”
android:entryValues=”@array/entryvalues_list_preference”
android:dialogTitle=”选择一个” />
android:title=”启动偏好”>
android:key=”screen_preference”
android:title=”屏幕”
android:summary=”显示另一个偏好屏幕”>
android:key=”next_screen_checkbox_preference”
android:title=”开关偏好”
android:summary=”另一个屏幕上的偏好” />
android:title=”意图偏好”
android:summary=”通过意图启动一个Activity”>
android:data=”http://www.android.com” />
android:title=”偏好属性”>
android:key=”parent_checkbox_preference”
android:title=”父开关”
android:summary=”这是一个父开关” />
android:key=”child_checkbox_preference”
android:dependency=”parent_checkbox_preference”
android:layout=”?android:attr/preferenceLayoutChild”
android:title=”子开关”
android:summary=”这是一个子开关” />
补充
android:summaryOff=”已关闭”
android:summaryOn=”已开启”
android:title=”无线状态(WIFI)” />
补充 + 动态修改 PreferenceFragment 内容// preferences_evolver_fragment
android:key=”evolver_screen_preference”>
// EvolverPreference
public class EvolverPreference extends PreferenceFragment {
// 标签
private static final String TAG = “EvolverPreference”;
// PreferenceScreen
PreferenceScreen evolver_screen_preference = null;
// Handler 消息处理
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0x1001:
JSONObject json = (JSONObject) msg.obj;
try {
JSONObject params = json.getJSONObject(“params”);
evolver_screen_preference.removeAll();
for (Iterator iter = params.keys(); iter.hasNext(); ) {
String key = (String) iter.next();
JSONObject software = params.getJSONObject(key);
Preference preference = new Preference(getActivity());
preference.setTitle(software.getString(“name”));
preference.setSummary(“版本:” + software.getString(“version”) + ” – ” + software.getString(“date”));
evolver_screen_preference.addItemFromInflater(preference);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
};
// 获取 Handler
public Handler getHandler() {
return handler;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_evolver_fragment);
evolver_screen_preference = (PreferenceScreen) getPreferenceManager().findPreference(“evolver_screen_preference”);
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196342.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...