閱讀778 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go Java動態代理學習1——靜態代理
  下一篇:go Spring事務管理—aop:pointcut expression解析