/********************************************************************************************
* author:conowen@大鐘
* E-mail:conowen@hotmail.com
* http://blog.csdn.net/conowen
* 註:本文為原創,僅作為學習交流使用,轉載請標明作者及出處。
********************************************************************************************/
1、Activity是Android四大組件(Application Components)之一,簡單來說Activity就是平常所見到的使用者介面,一般情況下,一個Activity所佔的視窗是滿屏的,但也可以是一個小的位於其它Activity之上的浮動視窗。一個Android工程至少有一個Activity,Activity上面可布有多個view的執行個體,如文字框、進度條、複選框、按鈕等等。多個Activity之間通過Intent來實現跳轉。
註:每建立一個activity,就要繼承(extends)Activity類,複寫onCreate(bundle)方法,然後綁定此activity的布局檔案XML
public class secondactivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.secondactivity);//綁定布局檔案 } }
最後還必須在AndroidManifest.xml裡面註冊這個新增加的activity
<activity android:label="second" android:name=".secondactivity" > </activity>
2、下面為Activity的繼承關係,可見Activity繼承與Contex類。
3、Activity的生命週期
其生命週期有如下幾種
onCreate()、onRestart()、onStart()、onResume()、onPause()、onStop()、onDestroy()
註:
一般更新activity,要複寫onResume(),然後在裡面寫更新的處理方法。
onpause方法與onstop方法的區別。
如果第二個activity沒有完全遮擋住第一個activity時,如第二個activity是對話方塊形式到時候。就只調用第一個activity的onpause方法。
當第二個對話方塊完全遮擋住第一個對話方塊到時候,即第二個Activity是滿屏狀態,就會調用第一個Activity的onpause和onstop方法。
另外關於onResume方法,只用來擷取使用者焦點的(其實就是滑鼠點擊或者拖動之類的),即當前Activity處於啟用狀態。
//第一個activity啟動第二個activity的順序first activity--onpausesecond activity--oncreate--onstart--onresumefirsr activity--onstop//滿屏狀態//--退掉第二個activity的順序,接上面second activity--onpausefirst activity--onrestart----------------->和oncreate差不多--onstart--onresumesecond activity--onstop--ondestroy
4、Activity之間的跳轉與intent
//第一個Activitypackage conowen.Activity.intent;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;public class IntentActivity extends Activity {/** Called when the Activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//建立一個按鈕和一個編輯框Button bt = (Button) findViewById(R.id.bt);// 通過id找到在main.xml設定的button,// 而且還強制轉換為Button類型,使用findViewById時,前面都要加強制類型。bt.setOnClickListener(new View.OnClickListener() {// setOnClickListener裡面的參數本來為View.OnClickListener,但是可以直接在裡面new這個類的執行個體,然後寫出執行個體就行@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent();EditText et = (EditText)findViewById(R.id.et);String tempstr=et.getText().toString();//.toString()方法表示返回String類型intent.putExtra("result", tempstr);//把值塞入intent,讓其傳遞到第二個Activity,intent相當於郵差,攜帶資料//"result", tempstr表示索引值對,result對應的值為tempstrintent.setClass(IntentActivity.this, secondactivity.class);// IntentActivity為第一個Activity,secondActivity為第一個ActivityIntentActivity.this.startActivity(intent);// 開始跳轉到第二個Activity}});}}
//第二個Activitypackage conowen.Activity.intent;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;public class secondactivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.secondactivity);Intent intent=getIntent();//擷取intentTextView textview=(TextView) findViewById(R.id.textview); String res=intent.getStringExtra("result"); //通過索引值對的鍵result,擷取相對應的數值int resint=Integer.parseInt(res);//把字串轉為整型textview.setText(resint+"");//(resint為整型)後面加雙引號,表示括弧裡面的都是字串了。//其實這裡在括弧裡面直接寫res即可,res本為String類型的,熟悉一下轉換方法而已}}