編輯:關於android開發
我們在開發應用程序時,不可能只使用一個Layout或者一個Activity,比如你個管理系統,要求用戶先登陸然後再使用,這時你至少要有兩個activity吧,先登陸一個,然後成功後需要跳到別一個Activity,這就遇到了多個Activity之間傳遞數據的問題,這也是今天我們要說的!
首先一個Activity都會去繼承Activity類,這個類裡有方法已經替我們實現,我們可以把activity看做是MVC裡的Action,即它負責渲染我們的頁面,組件頁面上所需要的數據等,我們先來看看一個Activity在渲染頁面時要經歷的幾個事件(方法),這些方法我們都可以在自定義的activity中去重寫它!
onCreate:在這裡創建界面,做一些數據的初始化工作;
onStart: 到這一步變成“用戶可見不可交互”的狀態;
onResume:變成和用戶可交互的,(在Activity棧系統通過棧的方式管理這些Activity,即當前Activity在棧的最上端,運行完彈出棧,則回到上一個Activity);
onPause:到這一步是可見但不可交互的,系統會停止動畫等消耗CPU的事情。從上文的描述已經知道,應該在這裡保存你的一些數據,因為這個時候你的程序的優先級降 低,有可能被系統收回。在這裡保存的數據,應該在onResume裡讀出來。
onStop:變得不可見 ,被下一個activity覆蓋了
onDestroy:這是Activity被kill前最後一個被調用方法了,可能是其他類調用finish方法或者是系統為了節省空間將它暫時性的干掉,可以用isFinishing()來判斷它,如果你有 一個Progress Dialog在線程中運行,請在onDestroy裡把他cancel掉,不然等線程結束的時候,調用Dialog的cancel方法會拋異常。
onPause,onstop, onDestroy,三種狀態下 activity都有可能被系統kill 掉。
/// <summary>
/// 點選item 後的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void listView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
Toast.MakeText(this, "你選擇了 " + datas[e.Position].Title, ToastLength.Short).Show();
Intent intent = new Intent(this, typeof(UserInfoLayoutActivity));
/* 通過Bundle對象存儲需要傳遞的數據 */
Bundle bundle = new Bundle();
/*字符、字符串、布爾、字節數組、浮點數等等,都可以傳*/
intent.PutExtra("Title", datas[e.Position].Title);
intent.PutExtra("Desc", datas[e.Position].Desc);
intent.PutExtra("AssistsCount", datas[e.Position].AssistsCount);
intent.PutExtra("Fails", datas[e.Position].Fails);
intent.PutExtra("Score", datas[e.Position].Score);
intent.PutExtra("Level", datas[e.Position].Level);
intent.PutExtra("Image", datas[e.Position].Image);
/*把bundle對象assign給Intent*/
intent.PutExtras(bundle);
StartActivity(intent);
}
上面代碼是在某個項目被單擊後所觸發的事件,而在事件建立了Intent對象,它是跨Activty傳值的基礎,之後PutExtra為它們賦值,它相當於一個hash表,OK,下面我們再來看看第二頁如何去接受這些數據
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.UserInfoLayout);//指定要去渲染的視圖
var listView = FindViewById<ListView>(Resource.Id.userInfoViewMain);
listView.Adapter = new UserAdapter(this, new UserInfo
{
Title = Intent.GetStringExtra("Title"),
Desc = Intent.GetStringExtra("Desc"),
AssistsCount = Intent.GetIntExtra("AssistsCount", 0),
Level = Intent.GetIntExtra("Level", 0),
Fails = Intent.GetIntExtra("Fails", 0),
Image = Intent.GetIntExtra("Image", 0),
Score = Intent.GetIntExtra("Score", 0),
});
}
代碼中的OnCreate是每個Activity所具有的方法,即它是進入Activity後,第一個要執行的方法,這裡一般是建立視圖,初始化數據,加載PartialView,最後,我們看一下大叔的程序執行的最終效果。
第二個頁面
呵呵,怎麼樣,挺有意思吧!
Android App 開發技能圖譜,androidapp
Android App 開發技能圖譜,androidapp 操作系統 Windows/MacOSX/Linux 編程語言 Java HTML/JS (Hybrid/
快速排序的離散數學分析,排序離散數學分析
快速排序的離散數學分析,排序離散數學分析 下面是偽代碼,這裡為了效率更高效,把切分值改成隨機化,算法原碼請參考 算法-5.快速排序 QUICKSO
[android] 手機衛士自定義對話框布局,android衛士
[android] 手機衛士自定義對話框布局,android衛士手機防盜頁面部分 點擊手機防盜,進行判斷,如果沒有設置密碼,顯示一個設置密碼的對話框,如果已經設置密碼了,
(轉)Android學習筆記②——HelloWorld的創建已經基本知識,androidhelloworld
(轉)Android學習筆記②——HelloWorld的創建已經基本知識,androidhelloworld開發第一應用 可以開發屬於自己的應用,是否有點小激動?好吧!讓