【Android】PreferenceFragment「建议收藏」

【Android】PreferenceFragment「建议收藏」调用PreferenceFragment类出错,用了我三天时间才搞定,查官方文档,看百度最后在这位大佬的帖子帮助下终于搞定了。https://blog.csdn.net/cqx13763055264/article/details/78498419#commentBoxPreferenceActivity创建和使用比较复杂,Android官方现在不建议使用了,使用Preferenc…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

【Android】PreferenceFragment「建议收藏」

调用PreferenceFragment类出错,用了我三天时间才搞定,查官方文档,看百度

最后在这位大佬的帖子帮助下终于搞定了。

https://blog.csdn.net/cqx13763055264/article/details/78498419#commentBox

PreferenceActivity创建和使用比较复杂,Android官方现在不建议使用了,使用Preference和fragment的结合更加便利地写出一个settings页面,下面来介绍PreferenceScreen和fragment结合方法

当然看个官方文档我也受益匪浅

1.导包问题

由于很多都被弃用了,我先找到了PreferenceFragmentCompat

【Android】PreferenceFragment「建议收藏」

通过选择Guide这个可以进入查看详细的sample

【Android】PreferenceFragment「建议收藏」

【Android】PreferenceFragment「建议收藏」

【Android】PreferenceFragment「建议收藏」

【Android】PreferenceFragment「建议收藏」左侧这边可以看一下特性

https://developer.android.com/reference/android/support/v7/preference/PreferenceFragmentCompat.html

这里会指明添加gradel依赖项

【Android】PreferenceFragment「建议收藏」

在gradel.builder中加入支持库

//implementation 'com.android.support:preference-v7:28.0.0-alpha1'

下面正式开始

1:文件的结构是:一个MainActivity,一个对应layout布局,一个可引入的XML碎片布局

【Android】PreferenceFragment「建议收藏」

2.具体内容

2.1 【settingsfragment.xml 】  一个布局碎片 使用<PreferenceScreen>标签作为最外层包裹,写好不用管了供以后调用

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <Preference
            android:key="clear_cache"
            android:title="清除缓存"/>
    <SwitchPreference
            android:key="push"
            android:title="推送通知"/>
    <SwitchPreference
            android:key="no_wifi"
            android:title="非wifi下加载图片"/>
    <Preference
            android:key="about"
            android:title="关于"/>
</PreferenceScreen>

2.21使用刚开始创建一个的MainActivity

package com.ywjh.settingsbyprenference;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;


import android.os.Bundle;
import android.preference.PreferenceFragment;

/*主类中打开layout布局,其中layout会以class方式调用下面的类并打开其引用的xml块*/
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
/*在主类添加一个静态类继承Preferencement  实现oncreate和 addPreferencesFromResource调用xml布局*/
    public static class SettingsFragment extends PreferenceFragment {
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.settingsfragment);
        }


    }
}

2.21更新 由于Preference被弃用了 使用androidx包下的方法也是种很好的选择,实现方法更精简了 当然最好是使用PreferenceFragmentCompat方法,后续有时间再更新吧

package com.ywjh.settingsbyprenference;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;


import android.os.Bundle;
import androidx.preference.PreferenceFragment;


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public static class SettingsFragment extends PreferenceFragment {
//        @Override
//        public void onCreate(@Nullable Bundle savedInstanceState) {
//            super.onCreate(savedInstanceState);
//            addPreferencesFromResource(R.xml.settingsfragment);
//        }

        @Override
        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
            addPreferencesFromResource(R.xml.settingsfragment);
        }


    }
}

 

2.22实现需要调用的layout布局【activity_main.xml】 并且将之前写好的关于Preference的xml布局以fragment布局添加进来

通过 android:name表面完成主类-》实现类

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <fragment
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/settingsFragment"
            android:name="com.ywjh.settingsbyprenference.MainActivity$SettingsFragment"/>

</androidx.constraintlayout.widget.ConstraintLayout>

 

实测不加id会报错,补上就完成啦

【Android】PreferenceFragment「建议收藏」

【Android】PreferenceFragment「建议收藏」

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

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

(0)
上一篇 2025年8月28日 上午10:22
下一篇 2025年8月28日 上午11:01


相关推荐

  • 实用的谋生技能_unity给人物模型加动作

    实用的谋生技能_unity给人物模型加动作Unity小科普老规矩,先介绍一下Unity的科普小知识:Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。也可以简单把Unity理解为一个游戏引擎,可以用来专业制作游戏!…

    2025年11月5日
    4
  • aop

    aop

    2021年9月3日
    63
  • 月之暗面Kimi估值飙升至180亿美元 新一轮10亿美元融资正在推进中

    月之暗面Kimi估值飙升至180亿美元 新一轮10亿美元融资正在推进中

    2026年3月15日
    3
  • 解决ie8下onpropertychange事件间歇性失效的问题「建议收藏」

    有的时候onpropertychange事件一下好用,一下不好用网上有的说去掉&lt;!DOCTYPEhtml&gt;就好了,我试了下,虽然然管用,但doctype是推荐加上的,去掉他有些东西会乱。如果文本框的样式中有width属性,没有height属性就会出现此问题,不知道是什么原因&lt;inputtype="text"id="name"name="na…

    2022年4月7日
    85
  • unix grep命令_grep命令实例

    unix grep命令_grep命令实例grep一般格式为:grep[选项]基本正则表达式[文件]这里基本正则表达式可为字符串。单引号双引号在grep命令中输入字符串参数时,最好将其用双引号括起来。在调用模式匹配时,应使用单引号。 例如:“mystring”。这样做有两个原因

    2022年8月30日
    7
  • threadlocal底层实现_hashset底层实现原理

    threadlocal底层实现_hashset底层实现原理ThreadLocal作用:提供线程内的局部变量,不同的线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂性。package com.mupack;public class App{ private String content; public void setContent(String content) { this.content = content; } public Stri

    2022年8月8日
    6

发表回复

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

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