【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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vector不是模板_vector的实现

    vector不是模板_vector的实现1.vector容器vetcor顾名思义就是一个向量的容器,该容器中的每个元素都属于同一个类型,有点类似于数组,vetor容器与数组的不同之处就在于,它具有“动态”的属性,举例来说,如果定义了一个vector容量为10,当你添加第十一个元素时,他会自己找一篇新的足够大领土(内存),然后搬家(把旧址复制过去)。而数组同志显然就是比较死板,在定义时有多大,实际也就有多大。vector容器的常规操作有…

    2022年8月18日
    8
  • 修改tomcat端口号的文件_tomcat更改端口号在哪个目录

    修改tomcat端口号的文件_tomcat更改端口号在哪个目录修改Tomcat端口号步骤:1.找到Tomcat目录下的conf文件夹2.进入conf文件夹里面找到server.xml文件3.打开server.xml文件4.在server.xml文件里面找到下列信息maxThreads=”150″minSpareThreads=”25″maxSpareThreads=”75″

    2025年6月26日
    3
  • xps 转 pdf android版,xps文件转换pdf

    xps 转 pdf android版,xps文件转换pdfXPS阅读器是一款专门为XPS格式的文件而打造的阅读器,能够帮助用户在这款软件中对XPS文件一键阅读,并且能够随时打开。对于不知道用什么打开xps文件的朋友可以下载这款专用阅读器,它还能对xps文件进行格式转换。软件功能1、使用xpsviewer,你可以创建他人无法篡改而且打印效果始终与屏幕显示保持一致的电子文档与他人共享。典型的例子包括合同、备忘录、简历、新闻稿和报表。2、XML页面规范(…

    2022年6月4日
    31
  • navicat连接sqlserver 08001错误

    navicat连接sqlserver 08001错误1、sqlsever配置工具中将sqlserver服务启动2、sqlserver网络配置,3个都启动,然后tcpip右键属性,IP地址中将ipall的TCP动态端口删除,TCP端口填写14333、sqlserver网络配置,3个都启动,然后tcpip右键属性,IP地址中将ip2(ip地址)、ip4(127.0.0.1)的已启用选为“是”4、重启sqlserver服务5、防火墙上14…

    2022年8月30日
    4
  • Java抓取网页数据(原网页+Javascript返回数据)

    Java抓取网页数据(原网页+Javascript返回数据)

    2021年12月6日
    44
  • 程序员法则xiazai_程序员手册

    程序员法则xiazai_程序员手册CSDN上很火的一帖子,全中国所有程序员都在集体YY(花了好半天时间才知道YY==意淫),http://community.csdn.net/Expert/topic/3881/3881210.xml?temp=.9396173CSDN上的帖子,可以看看人气http://www.javadict.com/profz.htm小说版,没有烦人的跟贴 …

    2022年10月6日
    2

发表回复

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

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