Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發10——Activity的跳轉與傳值

Android開發10——Activity的跳轉與傳值

編輯:關於Android編程

Activity跳轉與傳值,主要是通過Intent類,Intent的作用是激活組件和附帶數據。

 


一、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

[java] 
// 有返回值的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
 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

[java]
public void close(View v) 

 Intent intent = new Intent(); 
 intent.putExtra("result", "返回值"); 
 this.setResult(RESULT_OK, intent); // 設置結果數據  
 this.finish(); // 關閉Activity  

 public void close(View v)
 {
  Intent intent = new Intent();
  intent.putExtra("result", "返回值");
  this.setResult(RESULT_OK, intent); // 設置結果數據
  this.finish(); // 關閉Activity
 }

 


 

Activity跳轉與傳值,主要是通過Intent類,Intent的作用是激活組件和附帶數據。

 


一、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

[java] 
// 有返回值的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
 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

[java]
public void close(View v) 

 Intent intent = new Intent(); 
 intent.putExtra("result", "返回值"); 
 this.setResult(RESULT_OK, intent); // 設置結果數據  
 this.finish(); // 關閉Activity  

 public void close(View v)
 {
  Intent intent = new Intent();
  intent.putExtra("result", "返回值");
  this.setResult(RESULT_OK, intent); // 設置結果數據
  this.finish(); // 關閉Activity
 }

 


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved