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)


相关推荐

  • uname命令详解_uname -r

    uname命令详解_uname -r博客搬家,原地址:https://langzi989.github.io/2018/12/25/uname命令说明/使用uname命令可以帮助我们了解当前使用的系统的硬件信息,内核信息,处理器信息和当前使用的系统信息等。该命令可以在Fedora,Debian,CentOS,SUSELinux或者其他Linux操作系统的发行版本上运行。uname命令的使用方法在网络上已经有很多,甚…

    2022年10月23日
  • 20岁挣到百万,并非不可能

    20岁挣到百万,并非不可能

  • java实现文件传输

    java实现文件传输

  • 微信video 视频

    <videowidth=”320″height=”240″controls><sourcesrc=”movie.mp4″type=”video/mp4″></video>这是很正常的video写法,我们查看微信是什么样式  这样种video控件样式并不是我们想要的。所有我们需要自己来写视频封面的样式。…

  • Linux中top命令_linux tail命令详解

    Linux中top命令_linux tail命令详解原标题:Linux下top命令详解1、简介top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,可以自动或者通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.。比较准确的说,top命令提供了实时的对系统处理器的状态监控,显示系统中CPU…

  • Spring中ApplicationContext对Beanfactory扩展[通俗易懂]

    Spring中ApplicationContext对Beanfactory扩展[通俗易懂]ApplicationContext比BeanFactory扩展了高级特性,除了集成了ListableBeanFactory和HierarchicalBeanFactory以外,实现了如下附加功能:

发表回复

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

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