您好,登錄后才能下訂單哦!
如何進行Activity的啟動與關閉,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一:啟動
1:直接啟動 (startActivity)
◆首先聲明Intent對象指定啟動源及啟動目標,然后讓Intent對象作為startActivity方法的參數完成啟動。
◆實現:
Intent i = new Intent(MainActivity.this,Act2.class);//啟動源,啟動目標 startActivity(i); //直接啟動的方法 |
2:攜值啟動 (startActivity)
◆首先聲明Intent對象指定啟動源及啟動目標,調用Intent對象的putExtra方法,以鍵值對的形式攜帶數據,然后讓Intent對象作為startActivity方法的參數完成啟動
◆實現:
(1)主Activity
Intent i = new Intent(啟動源.this,啟動目標.class ); i.putExtra("鍵的名稱", "值"); startActivity(i); |
(2)目標Activity
String val = getIntent().getStringExtra("鍵的名稱");//取得傳過來的值 |
3:帶返回值的啟動 (startActivityForResult)
在某些場景下,我們需要從A界面跳轉攜帶數據到B界面,在B界面做一些處理后,在帶著返回值回到A界面已完成相應操作,這是我們需要帶返回值的啟動。
◆具體過程如下:
(1)主Activity,創建Intent對象,指明啟動源及啟動目標
(2)主Activity,調用Intent對象的putExtra方法,以鍵值對的形式攜帶數據
(3)主Activity,調用startActivityForResult方法,參數有兩個,第一個為Intent對象,第二個為requestCode,為int類型,為了判斷是哪個界面觸發的動作
(4)目標Activity,創建空的Intent對象,調用putExtra方法,以鍵值對的形式儲存數據
(5)目標Activity,準備數據,此時只是準備數據,還沒有傳送,只有finish界面之后才觸發啟動。setResult方法,兩個參數,第一個resultCode,標志是那個界面返回的結果,第二個參數Intent對象
(6)目標Activity,終止目標Activity,finish方法執行之后,出發了返回值啟動
(7)主Activity,重寫onActivityResult方法,通過對參數值的比較,來執行不同的操作
◆具體實現
(1)主Activity通過按鈕實現返回值啟動
public class MainActivity extends Activity { private Button button;//聲明按鈕 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1);//根據id查找按鈕 button.setOnClickListener(new OnClickListener() {//添加監聽 @Override public void onClick(View arg0) { Intent i = new Intent(MainActivity.this,Act2.class);//定義Intent對象,指明源于目標 startActivityForResult(i, 1); //帶返回值的啟動方式 } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) {//判斷是那個界面返回的動作 case 1: switch (resultCode) {//判斷是哪個返回值 case 1: System.out.println(data.getStringExtra("act2")); break; default: System.out.println("resultCode值不匹配"); break; } break; default: System.out.println("requestCode值不匹配"); break; } super.onActivityResult(requestCode, resultCode, data); } } |
(2)目標Activity
public class Act2 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act2); Intent i = new Intent();//空Intent對象 i.putExtra("act2", "我是act2");//儲存數據 setResult(1, i);//準備數據 finish();//終止Activity } } |
◆結果:在控制臺輸出返回來的值
08-21 13:34:50.777: I/System.out(451): 我是act2 |
二:關閉
1:關閉自身(finish)
finish方法用來當Activity完成所有任務且需要關閉的情況時調用。這個方法一旦被執行,Activity將執行生命周期中的onDestory方法,因此我們可以把資源回收的操作放在onDestory里,調用finish方法,間接的調用onDestory方法,已達到關閉Activity的目的。
2:關閉其他Activity(finishActivity)
finishActivity用來根據參數requestCode的值來決定關閉哪個Activity。能被該方法關閉的Activity可以有多個,但是這些Activity必須由帶返回值的啟動方式。
看完上述內容,你們掌握如何進行Activity的啟動與關閉的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。