PreferenceScreen的使用(非常有用)

在res下建个xml文件夹,建立2个xml文件:



preferencescreentest_one.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="using_categories_in_root_screen"
    android:summary="Using Preference Categories"
    android:title="Categories" >

    <PreferenceCategory
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:key="meats_screen"
        android:summary="Preferences related to Meats"
        android:title="肉类" >
        <CheckBoxPreference
            android:key="fish_selection_pref"
            android:summary="小心扎嗓子"
            android:title="鱼" />
        <CheckBoxPreference
            android:key="lamb_selection_pref"
            android:summary="小肥羊吃多了不好"
            android:title="羊肉" />
        <CheckBoxPreference
            android:key="chicken_selection_pref"
            android:summary="营养价值不够高"
            android:title="鸡肉" />
    </PreferenceCategory>
    <PreferenceCategory
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:key="vegi_screen"
        android:summary="Preferences related to vegetable"
        android:title="蔬菜类" >
        <CheckBoxPreference
            android:key="tomato_selection_pref"
            android:summary="西红柿可以炒鸡蛋⊙﹏⊙"
            android:title="西红柿" />
        <CheckBoxPreference
            android:key="xilanhua_selection_pref"
            android:summary="营养价值很丰富"
            android:title="西兰花" />
    </PreferenceCategory>

</PreferenceScreen>


preferencescreentest_two.xml

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

    <PreferenceScreen
        android:key="set"
        android:title="设置" >
        <EditTextPreference
            android:dialogTitle="对话框"
            android:key="et"
            android:persistent="false"
            android:singleLine="true"
            android:summary=""
            android:title="请输入字号" />

        <CheckBoxPreference
            android:key="auto_login"
            android:summary="选择是否自动登录"
            android:title="自动登录" />
    </PreferenceScreen>
    <PreferenceScreen
        android:key="save"
        android:title="保存" >
        <CheckBoxPreference
            android:key="save_to_sdcard"
            android:summary="是否保存到sd卡上"
            android:title="保存到存储卡上" />
    </PreferenceScreen>

</PreferenceScreen>


在activity中这样写:

package com.gem.hsx.preferencescreentest;


import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.PreferenceActivity;
import android.view.KeyEvent;
import android.widget.Toast;

public class PreferenceScreenTestActivity extends PreferenceActivity {
	
	CheckBoxPreference auto_login;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//加载第一个布局
		addPreferencesFromResource(R.xml.preferencescreentest_one);
		
	}
}

则效果如下:



第二种情况:

package com.gem.hsx.preferencescreentest;


import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.PreferenceActivity;
import android.view.KeyEvent;
import android.widget.Toast;

public class PreferenceScreenTestActivity extends PreferenceActivity {
	
	CheckBoxPreference auto_login;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		addPreferencesFromResource(R.xml.preferencescreentest_two);
		init();
	}
	
	private void init() 
	{
		auto_login=(CheckBoxPreference) findPreference("auto_login");
	}
	/**
	 * 若是activity跳转或者被对话框覆盖则对修改的配置进行保存
	 */
	@Override
	protected void onPause() 
	{
		Toast.makeText(PreferenceScreenTestActivity.this, "自动登录为"+auto_login.isChecked(), 1).show();
		super.onPause();
	}
	
	/**
	 * 若是在当前activity中按了返回键,则对修改的配置进行保存
	 */
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (keyCode==KeyEvent.KEYCODE_BACK&&event.getAction()==KeyEvent.ACTION_DOWN)
		{
			Toast.makeText(PreferenceScreenTestActivity.this, "自动登录为"+auto_login.isChecked(), 1).show();

		}
		return super.onKeyDown(keyCode, event);
	}

}

则效果如下:


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PreferenceScreen 是 Android 中的一个 UI 组件,它提供了一种结构化的方式来呈现应用程序的设置选项。它是 Preference 类的子类,可以包含多个 Preference 类的实例,例如 CheckBoxPreference、EditTextPreference 等。当用户点击 PreferenceScreen 中的某个选项时,会进入一个新的 PreferenceScreen 或者打开一个 Dialog,让用户进行相应的设置。 在实现 PreferenceScreen 的时候,需要在布局文件中使用 PreferenceScreen 标签,如下所示: ```xml <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 包含多个 Preference 类的实例 --> </PreferenceScreen> ``` 在 java 代码中,可以使用 PreferenceFragment 或者 PreferenceActivity 来管理 PreferenceScreen。 PreferenceFragment 是一个 Fragment,它可以被添加到 Activity 中。在 PreferenceFragment 中,可以通过调用 addPreferencesFromResource(int) 方法来加载一个 PreferenceScreen 布局文件。例如: ```java public class MyPreferenceFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } ``` PreferenceActivity 是一个 Activity,它继承自 ListActivity。在 PreferenceActivity 中,可以通过调用 addPreferencesFromResource(int) 方法来加载一个 PreferenceScreen 布局文件。例如: ```java public class MyPreferenceActivity extends PreferenceActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); } } ``` 需要注意的是,从 Android 11 开始,推荐使用 PreferenceFragmentCompat 替代 PreferenceFragment。PreferenceFragmentCompat 是一个兼容库,可以在 Android 4.0 及以上版本中使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值