Android開發10——Activity的跳轉與傳值_顯示意圖(intent)的應用
Activity跳轉與傳值,主要是通過Intent類,Intent的作用是激活組件和附帶數據。
intent可以激活Activity,服務,廣播三類組件。
本博文講的是顯示意圖激活Activity組件。所謂顯示意圖就是在activity的激活時,顯示指出了需要激活的activity的名字。
一、Activity跳轉
方法一
Intent intent = new Intent(A.this, B.class);
startActivity(intent)
方法二
Intent intent = new Intent();
intent.setClass(A.this, B.class);
startActivity(intent);
實現從A跳轉到B(A、B均繼承自Activity)
二、傳遞數據
Activity A 傳遞數據
方法一
Intent intent = new Intent();
intent.setClass(A.this, B.class);
intent.putExtra("name", "xy");
intent.putExtra("age", 22);
startActivity(intent);
方法二
Intent intent = new Intent(A.this, B.class);
Bundle bundle = new Bundle();
bundle.putString("name", "xy");
bundle.putInt("age", 22);
intent.putExtras(bundle);
startActivity(intent);
Activity B 接收數據
// 獲取參數1
Intent intent = this.getIntent();
String name = intent.getStringExtra("name");
int age = intent.getIntExtra("age", 22); // 缺省值為22
// 獲取參數2
Bundle bundle = intent.getExtras();
String name2 = bundle.getString("name");
int age2 = bundle.getInt("age", 22);
兩種獲取參數方式均可,並不是和傳參1,2方法一一對應
三、Activity返回值
跳轉後前一個Activity已經被destroy了。如若要返回並顯示數據,就必須將前一個Activity再次喚醒,同時調用某個方法來獲取並顯示數據。做法如下
1.從A頁麵跳轉到B頁麵時不可使用startActivity()方法,而要使用startActivityForResult()方法
2.在A頁麵的Activity中,需要重寫onActivityResult(int requestCode, int resultCode, Intent data)方法
Activity A
// 有返回值的Activity public void openNewActivity2(View v) { Intent intent = new Intent(); intent.setClass(this.getApplicationContext(), OtherActivity2.class); intent.putExtra("name", "xy"); intent.putExtra("age", 20); startActivityForResult(intent, 1); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // requestCode用於區分業務 // resultCode用於區分某種業務的執行情況 if (1 == requestCode && RESULT_OK == resultCode) { String result = data.getStringExtra("result"); Toast.makeText(this.getBaseContext(), result, Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this.getBaseContext(), "無返回值", Toast.LENGTH_SHORT).show(); } }
Activity B
public void close(View v) { Intent intent = new Intent(); intent.putExtra("result", "返回值"); this.setResult(RESULT_OK, intent); // 設置結果數據 this.finish(); // 關閉Activity }
四、總結
以上采用的意圖intent均是顯示意圖。
參考地址:https://www.cnblogs.com/feng88724/archive/2011/02/10/1961225.html
最後更新:2017-04-03 07:57:28