Android 存储及数据操作 之 PreferenceScreen

本文介绍了如何在Android中创建并使用PreferenceScreen,包括继承PreferenceFragment加载XML,编写自定义XML布局,添加CheckBoxPreference和ListPreference,以及在MainActivity中添加和管理Fragment。同时强调了在ListPreference中设置entryValues和entries的重要性,并展示了对应的arrays.xml配置。最后提到了PreferenceScreen保存的位置和通过嵌套PreferenceScreen实现二级菜单的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 、新建 MyPreferenceActivity  继承 PreferenceFragment 类,在onCreate 方法中加载自定义 PreferenceScreen XML 文件


public class MyPreferenceActivity extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        //加载自定义 PreferenceScreen XML 文件
        addPreferencesFromResource(R.xml.settings);
    }

}


2 、 编写自定义的 PreferenceScreen xml 文件

         <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <PreferenceCategory
        android:key="set"
        android:summary="请设置"
        android:title="设置" >
        <CheckBoxPreference
            android:key="闹钟"
            android:summary="请设置闹钟"
            android:title="设置闹钟" />

        <ListPreference
            android:entryValues="@array/list_arrays_values"
            android:entries="@array/list_arrays"
            android:key="列表"
            android:icon="@android:drawable/ic_search_category_default"
            android:title="设置列表"
            android:summary="设置列表描述"
            >
        </ListPreference>
    </PreferenceCategory>

</PreferenceScreen>


3 、 在 MainActivity 的布局文件中,加入将要放置Fragment 的容器

              <FrameLayout
    android:id="@+id/contain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    ></FrameLayout>


4 、 在MainActivity 中把 PreferenceFragment 附加到Activity 上

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 把 PreferenceFragment 附加到Activity 上
        FragmentManager fm = getFragmentManager();
        Fragment fragment = fm.findFragmentById(R.id.contain);
        if (fragment == null) {
            fragment = new MyPreferenceActivity();
            fm.beginTransaction().add(R.id.contain, fragment)
            .commit();
        }
    }
}



4 、注意: 例如 使用ListPreference 的时候,要注意定义    

     android:entryValues="@array/list_arrays_values"    //<!--  键  Key  -->
     android:entries="@array/list_arrays"                        // <!-- 值  Value  -->

这两个属性对用的Values 下的 arrays.xml 文件,注意Key-Value 都要.


<resources>
    <!--  键  KEY  -->
    <string-array name="list_arrays">
        <item>1</item>
        <item>2</item>
        <item>3</item>
        <item>4</item>
        <item>5</item>
        <item>6</item>
        <!-- 值  Value  -->
    </string-array>
      <string-array name="list_arrays_values">
        <item>1.1</item>
        <item>2.1</item>
        <item>3.1</item>
        <item>4.1</item>
        <item>5.1</item>
        <item>6.1</item>
    </string-array>

</resources>



5 、 在 PreferenceScreen 中定义的,设定其Key

6 、 结果的 xml 文件保存在  /data/data/应用包名/share_prefs  中

7 、 在 PreferenceScreen  内部添加 PreferenceScreen ,实现点击该项进入另一新的     PreferenceScreen 功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值