启动Activity的两种方式startActivity和startActivityForResult(一)
啟動Activity有兩種方式:
1,startActivity(Intent intent);啟動其他Activity
2,startActivityForResult(Intent intent,int requestCode):以指定指定的請求碼(requestCode)啟動Activity,并且程序?qū)鹊叫聠覣ctivity的結(jié)果(通過重寫onActivityResult()方法來獲取)
啟動Activity是可指定一個(gè)requestCode參數(shù),該參數(shù)代表了啟動Activity的請求碼。這個(gè)請求碼的值由開發(fā)者自己設(shè)置,其實(shí)就是一個(gè)int整數(shù)值,只是用于表示請求來源
關(guān)閉Activity的兩種方法:
1,finish():結(jié)束當(dāng)前Activity;
2,finishActivity(intrequestCode):結(jié)束以startActivityForResult(Intent intent,int requestCode)方法啟動的Activity。
startActivity和startActivityForResult的區(qū)別:
startActivity在啟動其他Activity之后是不會被回調(diào)回來的,相當(dāng)于啟動者和被啟動者在啟動完畢之后是沒有關(guān)系的
startActivityForResult在啟動了其他Activity之后是由回調(diào)的,也就是說啟動者與被啟動者在啟動完畢之后依然是有關(guān)系的
第一種方式比較直接,通過A的界面組件(比如按鈕)可以啟動第二個(gè)ActivityB,但是A和B之間不會傳遞數(shù)據(jù),也就是無法進(jìn)行通信
其基本代碼模板是:
// 創(chuàng)建需要啟動的Activity對應(yīng)的Intent Intent intent = new Intent(StartActivity.this,SecondActivity.class); // 啟動intent對應(yīng)的Activity startActivity(intent); 例,第一個(gè)Activity很簡單,值由一個(gè)按鈕,該按鈕進(jìn)入第二個(gè)Activity, 第二個(gè)Activity只有兩個(gè)按鈕,一個(gè)按鈕簡單的返回第一個(gè)Activity,但是不會結(jié)束自己,第二個(gè)按鈕結(jié)束自己并返回上一個(gè)Activity
StartActivity.java
public class StartActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// 獲取應(yīng)用程序中的bn按鈕Button bn = (Button) findViewById(R.id.bn);// 為bn按鈕綁定事件監(jiān)聽器bn.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View source){// 創(chuàng)建需要啟動的Activity對應(yīng)的IntentIntent intent = new Intent(StartActivity.this,SecondActivity.class);// 啟動intent對應(yīng)的ActivitystartActivity(intent);}});} }SecondActivity.java
public class SecondActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.second);// 獲取應(yīng)用程序中的previous按鈕Button previous = (Button) findViewById(R.id.previous);// 獲取應(yīng)用程序中的close按鈕Button close = (Button) findViewById(R.id.close);// 為previous按鈕綁定事件監(jiān)聽器previous.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View source){// 獲取啟動當(dāng)前Activity的上一個(gè)IntentIntent intent = new Intent(SecondActivity.this,StartActivity.class);// 啟動intent對應(yīng)的ActivitystartActivity(intent);}});// 為close按鈕綁定事件監(jiān)聽器close.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View source){// 獲取啟動當(dāng)前Activity的上一個(gè)IntentIntent intent = new Intent(SecondActivity.this,StartActivity.class);// 啟動intent對應(yīng)的ActivitystartActivity(intent);// 結(jié)束當(dāng)前Activityfinish();}});} }
總結(jié)
以上是生活随笔為你收集整理的启动Activity的两种方式startActivity和startActivityForResult(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Handler消息传递机制(二)Hand
- 下一篇: Activity的生命周期理解