第七課:Activity 及其子類的使用一:LauncherActivity

Activity 的直接子類主要由以下六種:AccountAuthenticatorActivityAliasActivityExpandableListActivityFragmentActivityListActivityNativeActivityActivityGroup

間接子類主要有以下三種:LauncherActivity(繼承自 ListActivity)、 PreferenceActivity(繼承自ListActivity)、TabActivity(繼承自ActivityGroup)。


(1)AccountAuthenticatorActivity:實現賬戶管理界面的 Activity。

(2)AliasActivity: 別名 Activity 的基類,用這個 Activity 來加載其他的 Activity 同時結束自己,它的子類必須實現 onCreate() 方法。可以在 onCreate()  方法中調用 finish() 方法,這時Activity跳過生命週期直接調用 onDestroy() 方法。 

(3)ExpendableListActivity:實現可展開列表界面的 Activity ,其中的 item 通過 ExpandableListAdapter 接口來綁定數據源。當用戶選擇其中某一項時可以自己定義處理方法。ExpendableListActivity 含有一個 ExpandableView 對象,用兩層的方法來展示數據,第一層是組,下面那一層是它的孩子。

(4)ListActivity 和 ExpendableListActivity 大同小易不做介紹。

(5)PreferenceActivity:ListActivity 的子類,實現程序參數設置、存儲界面的 Activity。 

(6)TabActivity:實現 Tab 界面的 Activity。被廢棄使用,可以使用 FragmentActivity 來代替 。

(7)ActivityGroup  被廢棄使用,可以使用 Fragment  和 FragmentManager 來代替 。

(8)LauncherActivity:ListActivity的子類,抽象類,用來陳列所有在給定 intent 下能使用的 Activity,當點擊時加載Activity 。

(9)NativeActivity:沒有必要繼承這個類,只需要在AndroidManifest.xml聲明就可以用來展示C++程序了。 

(10)FragmentActivity:用來支持Fragment和 Loader 等API的基類,在android.support.v4包下。


一般常用的 Activity 的基類有如下五種:ListActivity、LauncherActivity、ExpendableListActivity、PreferenceActivity 和 FragmentActivity。


例1:用 LauncherActivity 開發啓動 Activity 的列表

LauncherActivity 繼承了 ListActivity,因此它本質上也是一個開發列表界面的 Activity。有所不同的是,他開發出來的列表界面中的每個列表項都對應一個 Intent,因此當用戶單擊不同的列表項時,應用程序會啓動相對應的 Activity。

使用 LauncherActivity 時,需要爲它設置 Adapter,既可使用簡單的 ArrayAdapter,也可以使用 SimpleAdapter,當然也可以擴展 BaseAdapter 來實現自己的 Adapter。

與使用普通 ListActivity 不同的是,集成 LauncherActivity 時通常應該重寫 Intent intentForPosition(int position) 方法,該方法根據不同列表項返回不同的 Intent,用於啓動不同的 Activity。

public class OtherActivity extends LauncherActivity
{
	//定義兩個Activity的名稱
	String[] names = {"設置程序參數" ,  "查看星際兵種"};
	//定義兩個Activity對應的實現類
	Class<?>[] clazzs = {PreferenceActivityTest.class
		, ExpandableListActivityTest.class};
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
			android.R.layout.simple_list_item_1 , names);
		// 設置該窗口顯示的列表所需的Adapter
		setListAdapter(adapter);
	}
	//根據列表項來返回指定Activity對應的Intent
	@Override public Intent intentForPosition(int position)
	{
		return new Intent(OtherActivity.this , clazzs[position]);
	}
}

後續鏈接:Activity 及其子類的使用二:ExpandableListActivity


源代碼下載


發佈了34 篇原創文章 · 獲贊 32 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章