android 切换 preferencefragment,Android之PreferenceFragment使用方法

android 切换 preferencefragment,Android之PreferenceFragment使用方法PreferenceFr 应用程序通常要提供首选项 以允许用户定制应用程序 例如 可以允许用户保存那些用于访问 Web 资源的登录凭据 等等 在 Android 中 可以使用 PreferenceAc 基类为用户显示一个用于编辑首选项的活动 在 Android3 0 和更高版本中 可以使用 PreferenceFr 类实现相同的功能 XML 新建 res

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”);

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223244.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午2:32
下一篇 2026年3月17日 下午2:32


相关推荐

  • Python 逻辑运算符及用法

    Python 逻辑运算符及用法Python 逻辑运算符及用法高中数学中我们就学过逻辑运算 例如 p 为真命题 q 为假命题 那么 p 且 q 为假 p 或 q 为真 非 q 为真 Python 也有类似的逻辑运算 请看下表 逻辑运算符一般和关系运算符结合使用 例如 14 gt 6and45 6 gt 9014 gt 6 结果为 True 成立 45 6 gt 90 结果为 False 不成立 所以整个表达式的结果为 False 也即不成立 再看一个比较实用的例子 age int input 请输入年龄

    2026年3月16日
    2
  • sql删除或清空表数据[通俗易懂]

    sql删除或清空表数据[通俗易懂]sql删除或清空表数据一、sql清空表数据的三种方式:二、语法一、sql清空表数据的三种方式:我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:1、truncate–删除所有数据,保留表结构,不能撤销还原2、delete–是逐行删除速度极慢,不适合大量数据删除3、drop–删除表,数据和表结构一起删除,快速二、语法truncatetable表名deletefrom表名deletefrom表

    2022年4月30日
    55
  • Element 修改 table 里面的滚动条样式

    不考虑兼容的时候,可以全局设置成这种样式修改全局滚动条样式<style>/*定义滚动条高宽及背景高宽分别对应横竖滚动条的尺寸*/::-webkit-scrollbar{width:6px;/*滚动条宽度*/height:8px;/*滚动条高度*/background-color:white;}/*定义滑块内阴影+圆角*/::-webkit-scrollbar-thum.

    2022年4月9日
    459
  • MiniMax联手腾讯云部署百万级智能体,人工智能AIETF(515070)持仓股光环新网涨超6%

    MiniMax联手腾讯云部署百万级智能体,人工智能AIETF(515070)持仓股光环新网涨超6%

    2026年3月19日
    2
  • Django(30)Django常用的模板标签

    Django(30)Django常用的模板标签常用的模板标签if标签if标签相当于Python中的if语句,有elif和else相对应,但是所有的标签都需要用标签符号({%%})进行包裹。if标签中可以使用==、!=、<、<=、&

    2022年8月7日
    8
  • 计算机网络协议(三)——UDP、TCP、Socket[通俗易懂]

    计算机网络协议(三)——UDP、TCP、Socket[通俗易懂]底层网络知识详解:最重要的传输层概述一、UDP协议二、TCP协议2.1TCP的三次握手概述这个专栏的计算机网络协议,我是在极客时间上学习已经有三万多人购买的刘超老师的趣谈网络协议专栏,讲的特别好,像看小说一样学习到了平时很枯燥的知识点,计算机网络的书籍太枯燥,感兴趣的同学可以去付费购买,绝对物超所值,本文就是对自己学习专栏的总结,评论区可以留下你的问题,咱们一起讨论!传输层中有两…

    2022年6月7日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号