Android preference_安卓fragment切换

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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账号...

(0)


相关推荐

  • file,fileInputStream, fileReader,inputStreamReader等java文件流类的关系区别

    file,fileInputStream, fileReader,inputStreamReader等java文件流类的关系区别

  • Java设计模式——策略模式[通俗易懂]

    Java设计模式——策略模式[通俗易懂]策略模式1.策略模式简介策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为一个行为接口和具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略。本模式使得算法可独立于使用它的用户而变化2.模式结构策略模式包含如下角色:Strategy:抽象策略类:策略是一个接口,该接口定义若干个算法标识,即定义了若干个抽象方法(如下图的algorithm())Context:环境类/上下文类:上下文是依赖于接口的类(

  • pycharm默认主题_pycharm设置背景

    pycharm默认主题_pycharm设置背景一、Pycharm基本设置(小白篇)1、打开Pycharm设置,【File】-【Settings】2、设置解释器,【File】-【Settings】-【Project:项目名字】-【ProjectInterpreter】-【设置图标】-【Add】-【浏览到目标解释器】,选择相应解释器即可。3、设置pycharm主题,【File】-【Settings】-【Appearance&Behavior】-【Appearance】;Theme:修改主题、Usecustomf

  • django 渲染_源码论坛

    django 渲染_源码论坛前言渲染模块的原理和解析模块是一样,drf默认的渲染有2种方式,一种是json格式,另一种是模板方式。渲染模块源码入口入口:APIView类中dispatch方法中的:self.response

  • 语义分割如何做标注_语义分割转实例分割

    语义分割如何做标注_语义分割转实例分割在进行Segmentation训练之前需要准备训练集和验证集,本文将要来介绍如何使用LabelMe进行标记。LabelMe是个可以绘制多边形、矩形、圆形、直线、点的一套标记工具,可用于分类、目标检测、语义分割、实例分割任务上的数据标注。1.label安装与数据标注首先安装LabelMe,我使用Anaconda进行安装。打开AnacondaPrompt执行以下指令:pipinstalllabelme接着输入labelme会出现以下UI介面,点选OpenDir选择要标记的图片资料

  • 使用 openssl 生成证书(含openssl详解)「建议收藏」

    使用 openssl 生成证书(含openssl详解)「建议收藏」原文一、openssl简介openssl是目前最流行的SSL密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS协议的实现。官网:https://www.openssl.org/source/构成部分密码算法库密钥和证书封装管理功能SSL通信API接口用途建立RSA、DH、DSAkey参数建立X.5

发表回复

您的电子邮箱地址不会被公开。

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