疯狂Android讲义(第3版)学习笔记(第四章---Activity与Fragment)
来源:互联网 发布:windows优化大师固态 编辑:程序博客网 时间:2024/05/22 14:29
1,PreferenceActivity和ExpandableListActivity的使用
PreferenceActivity主要用于显示一个显示设置选项参数并进行保存的窗口,ExpandableListActivity主要用于显示一个可展开的列表窗口
// PreferenceActivityTestimport android.content.SharedPreferences;import android.os.Bundle;import android.preference.EditTextPreference;import android.preference.Preference;import android.preference.PreferenceActivity;import android.preference.PreferenceFragment;import android.preference.PreferenceScreen;import android.widget.Button;import android.widget.Toast;import java.util.List;/** * PreferenceActivity是通过选项设置的布局文件,以PreferenceScreen作为根元素 * 并结合PreferenceFragment使用,其中Activity负责加载列表布局,Fragment负责加载选项布局 */public class PreferenceActivityTest extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 为界面设置一个标题按钮 if(hasHeaders()){ Button btn = new Button(this); btn.setText("设置操作"); // 将按钮添加到界面 setListFooter(btn); } } /** * 重写该方法,用于加载界面布局文件 */ @Override public void onBuildHeaders(List<Header> target) { loadHeadersFromResource(R.xml.preference_headers , target); } /** * 重写该方法,验证各PreferenceFragment是否有效 */ @Override protected boolean isValidFragment(String fragmentName) { return true; } /** * 创建Prefs1Fragment和Prefs2Fragment两个类 * 点击header出现的两个Fragment 在header里面设置对应的Fragment */ public static class Prefs1Fragment extends PreferenceFragment{ private SharedPreferences mSp; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); initData(); } private void initData() { PreferenceScreen ps = getPreferenceScreen(); Preference pName = ps.findPreference("name"); EditTextPreference etp = (EditTextPreference) pName; etp.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String name = mSp.getString("name", ""); Toast.makeText(getActivity(), "name:" + name, Toast.LENGTH_SHORT).show(); return true; } }); } } public static class Prefs2Fragment extends PreferenceFragment{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.display_prefs); // 获取传入该Fragment的参数 String website = getArguments().getString("website"); Toast.makeText(getActivity(), "网站的域名是:" + website , Toast.LENGTH_SHORT).show(); } }}----------------------------------------------------------------------------------------// (xml)preference_headers.xml// 加载activity的界面布局<?xml version="1.0" encoding="utf-8"?><preference-headers xmlns:android="http://schemas.android.com/apk/res/android"> <!--指定PreferenceFragment的列表项--> <header android:fragment="com.zhumei.activity.PreferenceActivityTest$Prefs1Fragment" android:icon="@mipmap/a" android:title="小鸡相关设置" android:summary="设置小鸡相关选项"/> <header android:fragment="com.zhumei.activity.PreferenceActivityTest$Prefs2Fragment" android:icon="@mipmap/b" android:title="螃蟹相关设置" android:summary="设置螃蟹相关选项"> <extra android:name="website" android:value="www.zhumei.net"/> </header> <header android:icon="@mipmap/c" android:title="使用Intent" android:summary="使用Intent启动某个Activity"> <intent android:action="android.intent.action.VIEW" android:data="http://www.zhumei.net/"/> </header></preference-headers>----------------------------------------------------------------------------------------// (xml)prefs.xml和(xml)display_prefs.xml// 加载fragment的界面布局<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <!--设置系统铃声--> <PreferenceCategory android:title="铃声选择设置"> <RingtonePreference android:key="ring_key" android:ringtoneType="all" android:showDefault="true" android:showSilent="true" android:summary="选择铃声(设置RingtonePreference)" android:title="设置铃声"/> </PreferenceCategory> <PreferenceCategory android:title="英雄选择设置"> <MultiSelectListPreference android:dialogTitle="你最喜欢的英雄为:" android:entries="@array/hero_name_list" android:entryValues="@array/hero_value_list" android:key="hero" android:summary="选择英雄(设置MultiSelectListPreference)" android:title="设置你最喜欢的英雄"/> </PreferenceCategory> <PreferenceCategory android:title="帐号信息设置"> <!--通过输入框填写用户名--> <EditTextPreference android:dialogTitle="您所使用的用户名为:" android:key="name" android:summary="填写您的用户名(测试EditTextPreference)" android:title="填写用户名"/> </PreferenceCategory> <PreferenceCategory android:title="性别设置"> <ListPreference android:dialogTitle="ListPreference" android:entries="@array/gender_name_list" android:entryValues="@array/gender_value_list" android:key="gender" android:summary="选择您的性别(测试ListPreference)" android:title="性别"/> </PreferenceCategory> <PreferenceCategory android:title="系统功能设置"> <CheckBoxPreference android:defaultValue="true" android:key="autoSave" android:summaryOff="自动保存:关闭(测试CheckBoxPreference)" android:summaryOn="自动保存:开启(测试CheckBoxPreference)" android:title="自动保存进度"/> </PreferenceCategory> <PreferenceCategory android:title="定时开关机设置"> <SwitchPreference android:defaultValue="true" android:key="timingStartStop" android:summaryOff="定时开关机:打开(测试SwitchPreference)" android:summaryOn="定时开关机:关闭(测试SwitchPreference)" android:title="设置定时开关机"/> </PreferenceCategory></PreferenceScreen>----------------------------------------------------------------------------------------// (values)array.xml// 加载fragment设置选项entries和entryValues中的集合<resources> <string-array name="light_strength_list"> <item>暗</item> <item>亮</item> <item>超亮</item> </string-array> <string-array name="light_value_list"> <item>暗</item> <item>亮</item> <item>超亮</item> </string-array> <string-array name="gender_name_list"> <item>男</item> <item>女</item> <item>未知</item> </string-array> <string-array name="gender_value_list"> <item>男</item> <item>女</item> <item>未知</item> </string-array> <string-array name="hero_name_list"> <item>墨菲特</item> <item>阿木木</item> <item>厄加特</item> </string-array> <string-array name="hero_value_list"> <item>墨菲特</item> <item>阿木木</item> <item>厄加特</item> </string-array></resources>----------------------------------------------------------------------------------------// MainActivityimport android.content.Intent;import android.content.SharedPreferences;import android.os.Bundle;import android.preference.PreferenceManager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button mBtn1; private Button mBtn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtn1 = (Button) findViewById(R.id.btn1); mBtn2 = (Button) findViewById(R.id.btn2); mBtn1.setOnClickListener(this); mBtn2.setOnClickListener(this); } @Override protected void onResume() { super.onResume(); SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); // 获取到的是entryValues(存储在数据库中的内容,而entry是显示给用户看的内容) // 这里的键就是Preference里面的key String gender = sp.getString("gender", ""); Toast.makeText(MainActivity.this, "gender:" + gender, Toast.LENGTH_SHORT).show(); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.btn1: Intent intent1 = new Intent(MainActivity.this , ExpandableListActivityTest.class); startActivity(intent1); break; case R.id.btn2: Intent intent2 = new Intent(MainActivity.this , PreferenceActivityTest.class); startActivity(intent2); break; default: break; } }}----------------------------------------------------------------------------------------// activity_main<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context="com.zhumei.activity.MainActivity"> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAllCaps="false" android:text="to ExpandableListActivityTest"/> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAllCaps="false" android:text="to PreferenceActivityTest"/></LinearLayout>
Demo下载请移步:http://download.csdn.net/download/zxc514257857/9960343
阅读全文
0 0
- 疯狂Android讲义(第3版)学习笔记(第四章---Activity与Fragment)
- 疯狂Android讲义(第3版)学习笔记(第二章---界面编程)
- 《疯狂Android讲义》学习笔记 -- Fragment详解
- <疯狂Android讲义>阅读笔记(3)
- (疯狂的Android讲义 学习笔记)android数据存储
- 《疯狂Android讲义》学习笔记 -- 深入理解Activity
- Android讲义3---第四章---Fragment详解
- 《疯狂Java讲义(第2版)》学习笔记:使用DatagramSocket发送接收数据
- 《疯狂JAVA讲义》学习笔记(一)
- 学习java疯狂讲义笔记(连载)
- <疯狂Android讲义>阅读笔记(2)
- <疯狂Android讲义>阅读笔记(4)
- <疯狂Android讲义>阅读笔记(5)
- 疯狂android讲义---activity
- AIDL学习(参考疯狂Android讲义第二版)
- 读书笔记(二)疯狂JAVA讲义 第四章 控制循环与数组
- 疯狂JAVA讲义---第四章(下):数组
- 疯狂的android讲义学习笔记
- Centos6 升级Git版本
- C++中的explicit关键字
- numpy: np.random模块 探究(源码)
- 【互联网安全】阿里云安全专家为你详细解读内容安全及防护
- celery分布式队列任务
- 疯狂Android讲义(第3版)学习笔记(第四章---Activity与Fragment)
- 深入理解Apache Flink核心技术
- JAVA必背面试题和项目面试通关要点
- 面向对象中装饰模式的理解
- Python实现感知器
- 理解Oauth2.0原理的好文章(转自阮一峰老师)
- ios libfdk-aac encode
- cmake项目引入dlib方法
- Spring基础特性总结一--核心组件Bean的使用