最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android中PreferenceActivity使用詳解

 更新時間:2021年09月08日 11:21:05   作者:Ang_qq_252390816  
本文主要介紹了Android中PreferenceActivity使用詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

一,Preference介紹

Android提供的preference以鍵值對的方式來處理這種情況:自動保存設(shè)置的數(shù)據(jù),并立時生效,而這種使用android sharedpreferences方式進(jìn)行保存的,不需要我們手動來寫sharedpreferences;

常見的Preference控件有:

  • 直接子類:DialogPreference, PreferenceGroup, RingtonePreference, TwoStatePreference
  • 非直接子類:CheckBoxPreference, EditTextPreference, ListPreference, MultiSelectListPreference, PreferenceCategory, PreferenceScreen, SwitchPreference

二,PreferencesActivity介紹

是Android中專門用來實(shí)現(xiàn)程序設(shè)置界面及參數(shù)存儲的一個Activity。從Android 3.0以后官方不再推薦直接讓PreferenceActivity加載選項(xiàng)設(shè)置布局文件,而是建議使用PreferenceFragment(此類在API級別28中已棄用。替代類androidx庫下的PreferenceFragmentCompat,有關(guān)androidx的問題有很多,這里不過多介紹 ),二者用法類似。PreferenceActivity在API級別29中已被棄用。PreferenceActivity與普通的Activity不同,它不是使用界面布局文件,而是使用選項(xiàng)設(shè)置的布局文件。

PreferencesActivity官方介紹文檔:

https://developer.android.com/reference/android/preference/PreferenceActivity.html

三,PreferenceActivity的使用

3.1,在res下新建xml目錄,在xml目錄下新建PreferenceActivity需要的布局文件setting.xml(使用PreferenceScreen 最為根節(jié)點(diǎn))

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > 
    
    <ListPreference
        android:key="setting_language_preference"
        android:title="語言設(shè)置"
        android:entries="@array/language_entries"
        android:entryValues="@array/language_values"
        android:summary="支持:普通話,粵語,英語,德語,法語"
        android:defaultValue="mandarin"  />
    
    <EditTextPreference
        android:key="setting_preference"   
		android:title="連接超時" 
		android:dialogTitle="請輸入時間(0-10000)ms"
        android:summary="默認(rèn)值1800"
		android:defaultValue="1800" />
 
	
	<CheckBoxPreference
		android:key="@string/pref_key_translate"
		android:title="Love me ?"
		android:defaultValue="false" />
 
</PreferenceScreen>

在res/values/strings.xml文件中新建以上需要的資源數(shù)據(jù)

<string-array name="language_entries">
        <item>普通話</item>
        <item>粵語</item>
        <item>英語</item>
        <item>俄語</item>
        <item>法語</item>
</string-array>
<string-array name="language_values">
        <item>mandarin</item>
        <item>cantonese</item>
        <item>en_us</item>
        <item>russian</item>
        <item>french</item>
</string-array>
<string name="pref_key_translate">love_me</string>

3.2,創(chuàng)建PreferenceActivity的子類SettingActivity

public class SettingActivity extends PreferenceActivity {
 
    public static final String PREFER_NAME = "setting";
    private EditTextPreference mVadbosPreference;
 
    @SuppressWarnings("deprecation")
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        getPreferenceManager().setSharedPreferencesName(PREFER_NAME);
        addPreferencesFromResource(R.xml.setting);
 
        mVadbosPreference = (EditTextPreference)findPreference("setting_preference");
 
    }
 
}

3.3,運(yùn)行看一下效果圖如下: 

 

注意:運(yùn)行時候,會自動在/data/data/<packagename>/shared_prefs/目錄生成一個文件名為setting文件;

四,PreferenceActivity分別和ListFragment,PreferenceFragment組合使用

PreferenceFragment官方文檔:

https://developer.android.com/reference/android/preference/PreferenceFragment

4.1,在res下新建xml目錄,在xml目錄下新建PreferenceActivity需要的布局文件activity_settings.xml(使用preference-headers

 最為根節(jié)點(diǎn),通過header引入Fragment)

<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
    <header android:fragment="com.ang.demo.ui.fragment.ListFragmentSettings"
        android:icon="@drawable/ic_launcher"
        android:title="Settings"
        android:summary="真球忙">
    </header>
 
    <header
        android:fragment="com.ang.demo.ui.fragment.PreferenceFragmentTest"
        android:title="PreferenceFragmentTest">
    </header>
 
    <header
        android:icon="@mipmap/ic_launcher"
        android:summary="view baidu website"
        android:title="baidu">
        <intent
            android:action="android.intent.action.VIEW"
            android:data="https://m.baidu.com/" />
    </header>
</preference-headers>

注意:header各個屬性的功能作用;

上面header引入ListFragment的子類ListFragmentSettings代碼:

public class ListFragmentSettings extends ListFragment {
    protected ArrayAdapter<String> mAdapter;
    protected String mData[];
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mData = getActivity().getResources().getStringArray(R.array.contries);
        mAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_single_choice, mData);
        setListAdapter(mAdapter);
    }
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_radio_zone_settings, container,false);
        return view;
    }
    
   
    public void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
    }
}

上面header引入PreferenceFragment的子類PreferenceFragmentTest代碼:

public class PreferenceFragmentTest extends PreferenceFragment {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        //從xml文件加載選項(xiàng)
        addPreferencesFromResource(R.xml.fragment_preference_test);
    }
}

fragment_preference_test布局文件(也是在res/xml/目錄下)

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 設(shè)置的類別 -->
    <PreferenceCategory
        android:key="mylocation"
        android:summary="我的位置源"
        android:title="我的位置">
        <CheckBoxPreference
            android:key="wireless_network"
            android:title="使用GPS"
            android:summary="使用Gps查看應(yīng)用的位置"
            />
    </PreferenceCategory>
 
    <PreferenceCategory
        android:key="mymsg"
        android:summary="個人信息s"
        android:title="個人信息">
        <EditTextPreference
            android:key="myname"
            android:title="請輸入真實(shí)姓名"
            android:summary="姓名"/>
    </PreferenceCategory>
 
</PreferenceScreen>

 4.2,創(chuàng)建PreferenceActivity的子類PreferenceActivityTest(名字都是隨便起的)

public class PreferenceActivityTest extends PreferenceActivity {
    private static List<String> fragments = new ArrayList<String>();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (hasHeaders()) {
            Button button = new Button(this);
            button.setText("Exit");
            setListFooter(button);
        }
    }
 
    @Override
    public void onBuildHeaders(List<Header> target) {
        loadHeadersFromResource(R.xml.activity_settings, target);//從xml文件加載Preference選項(xiàng)
        fragments.clear();
        for (Header header : target) {
            fragments.add(header.fragment);
        }
    }
 
    //android 4.3以上版本需要做驗(yàn)證,驗(yàn)證方式有很多 https://www.manongdao.com/article-73175.html
    @Override
    protected boolean isValidFragment(String fragmentName) {
        return fragments.contains(fragmentName);
    }
}

4.3,運(yùn)行后的效果圖:

 注意:ListFragment導(dǎo)入import android.app.ListFragment;別導(dǎo)入V4包下的(切記哦),如果導(dǎo)入V4包下的會出現(xiàn)  java.lang.ClassCastException異常;詳細(xì)詳細(xì)異常信息:

java.lang.RuntimeException:Unable to start activity ComponentInfo{com.ang.demo/com.ang.demo.ui.activity.PreferenceActivityTest}: android.app.Fragment$InstantiationException: Trying to instantiate a class com.ang.demo.ui.fragment.ListFragmentSettings that is not a Fragment

五,Preference數(shù)據(jù)獲取

以上都是Preference的使用和保存數(shù)據(jù);如何獲取Preference的數(shù)據(jù)呢;其實(shí)和shardpreference獲取數(shù)據(jù)一樣;通過key獲取;

總結(jié)

講了這么多,其實(shí)都是 Preference的子類在PreferenceActivity和PreferenceFragment中的應(yīng)用;以上實(shí)現(xiàn)設(shè)置的功能,谷歌官方文檔推薦使用androidx包下的Preference及子類和PreferenceFragmentCompat;總是還是v4 v7 v13等support 庫遷移androidx的問題;

到此這篇關(guān)于Android中PreferenceActivity使用詳解的文章就介紹到這了,更多相關(guān)Android PreferenceActivity內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java讀寫文件,在文件中搜索內(nèi)容,并輸出含有該內(nèi)容的所有行方式

    Java讀寫文件,在文件中搜索內(nèi)容,并輸出含有該內(nèi)容的所有行方式

    這篇文章主要介紹了Java讀寫文件,在文件中搜索內(nèi)容,并輸出含有該內(nèi)容的所有行方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Linux部署springboot項(xiàng)目彩色日志打印方式

    Linux部署springboot項(xiàng)目彩色日志打印方式

    這篇文章主要介紹了Linux部署springboot項(xiàng)目彩色日志打印方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Java AQS中閉鎖CountDownLatch的使用

    Java AQS中閉鎖CountDownLatch的使用

    CountDownLatch 是一個同步工具類,用來協(xié)調(diào)多個線程之間的同步,它能夠使一個線程在等待另外一些線程完成各自工作之后,再繼續(xù)執(zhí)行。被將利用CountDownLatch實(shí)現(xiàn)網(wǎng)絡(luò)同步請求,異步同時獲取商品信息組裝,感興趣的可以了解一下
    2023-02-02
  • Java 數(shù)組高頻考點(diǎn)分析講解

    Java 數(shù)組高頻考點(diǎn)分析講解

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語言對數(shù)組的實(shí)現(xiàn)及處理也不盡相同。Java 語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-04-04
  • Java?Date類的使用方式(日期處理)

    Java?Date類的使用方式(日期處理)

    本文介紹了Java中的Date類和Calendar類的使用,詳細(xì)講解了Date類的構(gòu)造方法和常用方法,并通過一個實(shí)例演示了如何使用Date類來比較兩個時間點(diǎn)之間的關(guān)系
    2024-11-11
  • eclipse實(shí)現(xiàn)Schnorr數(shù)字簽名

    eclipse實(shí)現(xiàn)Schnorr數(shù)字簽名

    這篇文章主要為大家詳細(xì)介紹了eclipse實(shí)現(xiàn)Schnorr數(shù)字簽名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 使用JavaWeb webSocket實(shí)現(xiàn)簡易的點(diǎn)對點(diǎn)聊天功能實(shí)例代碼

    使用JavaWeb webSocket實(shí)現(xiàn)簡易的點(diǎn)對點(diǎn)聊天功能實(shí)例代碼

    這篇文章主要介紹了使用JavaWeb webSocket實(shí)現(xiàn)簡易的點(diǎn)對點(diǎn)聊天功能實(shí)例代碼的相關(guān)資料,內(nèi)容介紹的非常詳細(xì),具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05
  • Java禁止使用finalize方法

    Java禁止使用finalize方法

    這篇文章主要介紹了Java禁止使用finalize方法,需要的朋友可以參考下
    2017-10-10
  • logback之如何按日期和大小切分日志

    logback之如何按日期和大小切分日志

    這篇文章主要介紹了logback之如何按日期和大小切分日志問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 詳解SpringBoot中使用RabbitMQ的RPC功能

    詳解SpringBoot中使用RabbitMQ的RPC功能

    這篇文章主要介紹了詳解SpringBoot中使用RabbitMQ的RPC功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11

最新評論

汉川市| 岳池县| 闸北区| 怀柔区| 香港| 土默特右旗| 汽车| 武夷山市| 博客| 旬邑县| 遂平县| 南溪县| 永州市| 来凤县| 佛坪县| 保定市| 德江县| 休宁县| 秀山| 韶关市| 深水埗区| 新泰市| 东丰县| 科尔| 大英县| 临漳县| 昌宁县| 保德县| 屏南县| 水城县| 铜川市| 莱阳市| 麻江县| 安顺市| 自治县| 桦南县| 武义县| 嫩江县| 通州市| 南漳县| 平度市|