转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空)
从下图我们可以知道,LauncherActivity、PreferanceActivity均继承于ListActivity,其中LauncherActivity实现当列表界面列表项被点击时所对应的Acitvity被启动;PreferanceActivity实现一个程序参数设置、存储功能的Activity列表界面。
一、LauncherActivity使用详解
1.概述:LauncherActivity的作用是是开发一个列表界面Activity,但是这个列表界面与普通的列表界面有所不同。它开发出来的列表界面中的每个列表项都对应于一个Intent,通过重写Intent intentForPosition(int position)方法根据不同列表返回不同的intent。当我们点击不同列表项时,应用程序会自动启动对应的Acitviy。效果如下:
2.LauncherActivity类介绍
(1)构造方法:LauncherActivity()
(2)重要方法
Intent intentForPosition(int position):根据不同列表返回不同的intent
void onCreate(Bundle savedInstanceState):启动Activity第一个被调用
void onListItemClick(ListView l, View v, int position, long id):当点击一个列表项时调用该方法
(3)Intent构造方法:用于实例化一个Intent对象
Intent()
Intent(Intent o)
Intent(String action)
Intent(String action, Uri uri)
Intent(Context packageContext, Class<?> cls)
Intent(String action, Uri uri, Context packageContext, Class<?> cls)
3.开发思路及源码
(1)为LauncherActivity界面填充列表项内容。通过装配适配器,将数组字符串数据源装配到视图,并根据按系统自带的android.R.layout.simple_expandable_list_item_1布局文件设计每个列表项外观和内容;
String[] names={"设置程序参数","查看人种"};
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1 , names);
setListAdapter(adapter);
(2)重写Intent intentForPosition(int position)方法,实现根据不同列表返回不同的intent。当用户点击Activity列表项时,系统将传递该列表项所在的位置position参数给intentForPosition方法,最后返回一个intent给上下文界面从而实现启动相对应的Acitvity。
Class<?>[] classes={PreferenceActivityTest.class,ExpandableListActivityTest.class};
public Intent intentForPosition(int position)
{
return new Intent(LaunchActivity.this,classes[position]); //new一个intent
}
(3)源代码
package com.example.android_activity_1;
import android.app.LauncherActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
/*主Activity:LauncherActivity
* 每个列表项都对应于一个Intent
* */
public class LaunchActivity extends LauncherActivity {
//1.定义两个Activity的名称
String[] names={"设置程序参数","查看人种"};
//2.定义两个Activity对应的实现类,前者用于显示一个显示设置选项参数并进行保存的窗口;后者用于显示一个可展开的列表窗口(Activity)
Class<?>[] classes={PreferenceActivityTest.class,ExpandableListActivityTest.class};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//3.装配ArrayAdapter适配器,将数据装配到对应的列表项视图中
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1 , names);
//4.设置该窗口显示的列表所需的adapter
setListAdapter(adapter);
}
//5.重写Intent IntentForPosition(int position)方法:根据列表项返回的intent,用于启动不同的Activity
public Intent intentForPosition(int position){
return new Intent(LaunchActivity.this,classes[position]); //返回一个Intent对象,已指明将要启动的类,其中 position的值在当用户点击Activity中列表项被确定
}
}
二、PreferenceActivity使用详解
1.概述:PreferenceActivity是一个非常有用的基类,当开发的Android应用程序需要进行选项设置并希望这些选项设置以参数的形式保存时,我们可以通过PreferenceActivity实现。PreferenceActivity与普通的Acitvity不同,它不再使用普通的界面布局文件,而是使用选项设置的布局文件。
选项设置的布局文件:以PreferenceScreen作为根元素,它表明定义一个参数设置的界面布局。
另外,一旦Activity继承了PreferenceActivity,那么该Activity完全不需要自己控制Preferences的读写,PreferenceActivity会为我们处理这一切。
2.PreferenceActivity类介绍
(1)嵌入类:class PreferenceActivity.Header
作用:用来描述用户将要点击的标头列表项
(2)PreferenceActivity重要方法
public void loadHeadersFromResource (int resid, List<PreferenceActivity.Header> target)
功能:解析resid所代表的布局资源文件,根据