日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android开发之PreferenceActivity和PreferenceFragment

發(fā)布時(shí)間:2023/12/9 Android 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发之PreferenceActivity和PreferenceFragment 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在PreferenceActivity中,給我們提供了四個(gè)選項(xiàng)集成控件:ListPreference,EditTextPreference,CheckBoxPreference和RingtonePreference。

注意:

通過PreferenceActivity生成的XML文件,命名方式是定死了的,生成的XML文件在data/data/<工程名>/shared_prefs/下,名字為“<工程名>_Preference.xml”這是無法改變的。

1、PreferenceList的介紹:

api介紹:


有兩個(gè)屬性要注意:

android:entries: 設(shè)置的內(nèi)容是我們在設(shè)置時(shí)看到的內(nèi)容android:entryValues:保存在preferences.xml中的值其余屬性同上。使用如下: //這個(gè)在String里面使用 <string-array name="array_sex"><item>男</item><item>女</item> </string-array> <string-array name="array_sex_value"><item>1</item><item>2</item> </string-array>//這個(gè)在xml里面使用(layout) <ListPreferenceandroid:key="list_key"android:title="性別"android:entryValues="@array/array_sex_value"android:entries="@array/array_sex"android:dialogTitle="性別列表"android:summary="請選擇您的性別"/>

?


activity:

package com.fluter.seer.flutertest;import android.os.Bundle; import android.preference.PreferenceActivity; import android.support.annotation.Nullable;public class SecondActivity extends PreferenceActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);/* 放入設(shè)置版面文件* 在這里,R.xml.mylistperference可以看作是布局文件*//** addPreferencesFromResource方法在Android3.0中就被棄用了* 但卻沒有替代方法* 谷歌的想法是,希望我們繼承PreferenceFragment來實(shí)現(xiàn)默認(rèn)選項(xiàng)頁* 但是這太難了。真的*/addPreferencesFromResource(R.xml.listperference);} }

xml/listperference.xml

注意,這個(gè)android:key的值也是Preference文件里面的XML“鍵”名android:title 大標(biāo)題android:summary 標(biāo)題下面的小字(這個(gè)要作為選項(xiàng)卡才有)android:entries 彈出的對(duì)話框中,列表顯示的文本內(nèi)容,注意哦,這里指定的是一個(gè)數(shù)組哦android:entryValues 與android:entries相對(duì)應(yīng)的值android:defaultValue 當(dāng)對(duì)應(yīng)值不存在時(shí)的默認(rèn)值android:dialogTitle 彈出的對(duì)話框中的標(biāo)題信息更多的標(biāo)簽設(shè)置等你來發(fā)掘--> <PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"android:key="screen_list"android:title="標(biāo)題"android:summary="說明摘要"><ListPreferenceandroid:key="myListPreference"android:title="標(biāo)題"android:summary="說明摘要"android:entries="@array/list_entries"android:entryValues="@array/list_entries_value"android:dialogTitle="這里是彈出框"android:defaultValue="@string/deflault_list_entries_value"></ListPreference></PreferenceScreen>

string.xml

<resources><string name="app_name">FluterTest</string><string name="deflault_list_entries_value">默認(rèn)實(shí)現(xiàn)</string><string-array name="list_entries"><item>陜西</item><item>山西</item><item>河北</item></string-array><string-array name="list_entries_value"><item>老師</item><item>學(xué)生</item><item>家長</item></string-array> </resources>

項(xiàng)目結(jié)構(gòu):

展示結(jié)果:

2、CheckBoxPreference的介紹

?

api介紹:


有兩個(gè)屬性要注意:

android:summaryOn:開啟說明 android:summaryOff:關(guān)閉說明<CheckBoxPreferenceandroid:key="check_key"android:title="自動(dòng)保存進(jìn)度條"android:summaryOn="自動(dòng)保存:開啟"android:summaryOff="自動(dòng)保存:關(guān)閉"/>

?


?

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"android:key="screen_list"android:summary="說明摘要"android:title="標(biāo)題" ><CheckBoxPreferenceandroid:key="medf"android:summaryOff="馬爾代夫未被選中"android:summaryOn="馬爾代夫被選中了"android:title="馬爾代夫" ></CheckBoxPreference><CheckBoxPreferenceandroid:key="mlqs"android:summaryOff="毛里求斯未被選中"android:summaryOn="毛里求斯被選中了"android:title="毛里求斯" ></CheckBoxPreference> </PreferenceScreen>

activity修改:

package com.fluter.seer.flutertest;import android.os.Bundle; import android.preference.PreferenceActivity; import android.support.annotation.Nullable;public class SecondActivity extends PreferenceActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);/* 放入設(shè)置版面文件* 在這里,R.xml.mylistperference可以看作是布局文件*//** addPreferencesFromResource方法在Android3.0中就被棄用了* 但卻沒有替代方法* 谷歌的想法是,希望我們繼承PreferenceFragment來實(shí)現(xiàn)默認(rèn)選項(xiàng)頁* 但是這太難了。真的*/addPreferencesFromResource(R.xml.checkbox);} }

項(xiàng)目結(jié)構(gòu):

展示效果:

3、EditTextPreference的介紹

api介紹:


屬性:android:dialogTitle 對(duì)話框標(biāo)題android:key 標(biāo)識(shí)keyandroid:summary簡要說明android:title標(biāo)題<EditTextPreferenceandroid:key="edt_key"android:title="填寫用戶名"android:summary="用戶名不能為空"android:dialogTitle="輸入您的用戶名"android:defaultValue="默認(rèn)值"android:dialogMessage="使用漢語"/>

xml/edittext.xml

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="edittext_screen" android:summary="屏幕簡要說明" android:title="屏幕標(biāo)題" > <EditTextPreference android:dialogTitle="輸入您的名稱:" android:key="editWord" android:defaultValue="im human" android:summary="簡要說明" android:title="輸入名稱" > </EditTextPreference> </PreferenceScreen>

項(xiàng)目結(jié)構(gòu):

效果展示:

4?RingtonePreference 系統(tǒng)鈴

api介紹:


android:ringtoneType?設(shè)置響鈴模式, 主要包括ringtone、notification、alarm、all ?? android:showSilent?是否顯示靜音??<RingtonePreferenceandroid:ringtoneType="all"android:title="設(shè)置鈴鐺"android:summary="選擇鈴鐺"android:key="ring_key"android:showDefault="true"android:showSilent="true" />

rating.xml

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><RingtonePreferenceandroid:ringtoneType="all"android:title="設(shè)置鈴鐺"android:summary="選擇鈴鐺"android:key="ring_key"android:showDefault="true"android:showSilent="true" /> </PreferenceScreen>

項(xiàng)目結(jié)構(gòu):

?

?

在activity里面的引用:

ringtonePreference = (RingtonePreference) findPreference("ring_key"); editTextPreference = (EditTextPreference) findPreference("edt_key"); listPreference = (ListPreference) findPreference("list_key"); checkBoxPreference = (CheckBoxPreference) findPreference("check_key");

事件監(jiān)聽總結(jié):?

ringtonePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) { //返回鈴聲所在庫的地址 String類型 如:content://media/internal/audio/media/32String uri = newValue.toString();Toast.makeText(getActivity(), ("路徑:" + uri), Toast.LENGTH_SHORT).show();return false;} }); ringtonePreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Overridepublic boolean onPreferenceClick(Preference preference) {Toast.makeText(getActivity(), "preference.getTitle():" + preference.getTitle(), Toast.LENGTH_SHORT).show();return false;} }); editTextPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) { //返回確認(rèn)后的新值 String類型Toast.makeText(getActivity(), ((String) newValue), Toast.LENGTH_SHORT).show();return false;} });listPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) { //返回確認(rèn)后的新值 String類型Toast.makeText(getActivity(), ((String) newValue), Toast.LENGTH_SHORT).show();return false;} });checkBoxPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) { //返回 true false boolean類型boolean isSelected = (boolean) newValue;if (isSelected){Toast.makeText(getActivity(), "開啟", Toast.LENGTH_SHORT).show();}else {Toast.makeText(getActivity(), "關(guān)閉", Toast.LENGTH_SHORT).show();} return false;} });

?

?

注意:從Android 3.0以后官方不再推薦直接讓PreferenceActivity加載選項(xiàng)設(shè)置布局文件,而是建議使用PreferenceFragment

第一步:創(chuàng)建frgment

package com.example.m05_preffragment01;import android.os.Bundle; import android.preference.PreferenceFragment;public class PrefFragment extends PreferenceFragment {@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//從xml文件加載選項(xiàng) addPreferencesFromResource(R.xml.preferences);}}

第二步:創(chuàng)建activity

package com.example.m05_preffragment01;import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction;import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//加載PrefFragmentFragmentManager fragmentManager = getFragmentManager();FragmentTransaction transaction = fragmentManager.beginTransaction();PrefFragment prefFragment = new PrefFragment();transaction.add(R.id.prefFragment, prefFragment);transaction.commit();}}

第三步:創(chuàng)建preferences.xml

<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" ><!-- 設(shè)置的類別 --><PreferenceCategoryandroid:key="mylocation"android:summary="我的位置"android:title="我的位置源" ><CheckBoxPreferenceandroid:key="wireless_network"android:summary="使用無線網(wǎng)絡(luò)查看應(yīng)用程序(例如Google地圖)中的位置"android:title="使用無線網(wǎng)絡(luò)" /><CheckBoxPreferenceandroid:key="gps_satellite_setting"android:summary="定位時(shí),精確到街道級(jí)別(取消選擇可節(jié)約電量)"android:title="啟用GPS衛(wèi)星設(shè)置" /></PreferenceCategory><PreferenceCategoryandroid:key="mymessage"android:summary="個(gè)人信息設(shè)置"android:title="個(gè)人信息設(shè)置" ><CheckBoxPreferenceandroid:key="yesno_save_individual_info"android:title="是否保存?zhèn)€人信息" /><EditTextPreferenceandroid:key="individual_name"android:summary="請輸入真實(shí)姓名"android:title="姓名 " /><ListPreferenceandroid:entries="@array/cities"android:entryValues="@array/cities"android:key="mycity"android:summary="所屬城市"android:title="所屬城市" /></PreferenceCategory></PreferenceScreen>

監(jiān)聽事件onPreferenceTreeClick()方法:

package com.example.m05_preffragment01;import android.os.Bundle;import android.preference.CheckBoxPreference;import android.preference.EditTextPreference;import android.preference.Preference;import android.preference.PreferenceFragment;import android.preference.PreferenceScreen;public class PrefFragment extends PreferenceFragment {@Overridepublic void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//從xml文件加載選項(xiàng) addPreferencesFromResource(R.xml.preferences);}@Overridepublic boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,Preference preference) {//如果“保存?zhèn)€人信息”這個(gè)按鈕被選中,將進(jìn)行括號(hào)里面的操作if("yesno_save_individual_info".equals(preference.getKey())) { CheckBoxPreference checkBoxPreference = (CheckBoxPreference)findPreference("yesno_save_individual_info");EditTextPreference editTextPreference = (EditTextPreference)findPreference("individual_name");//讓editTextPreference和checkBoxPreference的狀態(tài)保持一致editTextPreference.setEnabled(checkBoxPreference.isChecked());}// TODO Auto-generated method stubreturn super.onPreferenceTreeClick(preferenceScreen, preference);}}

展示:

總結(jié)

以上是生活随笔為你收集整理的Android开发之PreferenceActivity和PreferenceFragment的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。