Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android開發系列(十三):Intent實現Activity之間的轉換以及startActivityForResult傳遞參數

Android開發系列(十三):Intent實現Activity之間的轉換以及startActivityForResult傳遞參數

編輯:關於Android編程

一、Intent實現Activity之間的切換

1、構造函數法:

Intent intent = new Intent(this , OtherActivity.class); //兩個參數:第一個是上下文對象,第二個是要切換的Activity的class字節碼
startActivity(intent); 

2、setClass方法:

Intent intent = new Intent();
intent.setClass(this, OtherActivity.class); //設置要激活的組件
startActivity(intent);  	

3、setClassName方法:

Intent intent = new Intent();
intent.setClassName(this, "cn.itcast.activitys.OtherActivity");
startActivity(intent);

4、setComponent方法:

Intent intent = new Intent();
intent.setComponent(new ComponentName(this,OtherActivity.class));
startActivity(intent);

二、startActivityForResult用來傳遞參數

首先,我們是定義了兩個Activity,就是兩個界面:A和B。

A界面包含一個按鈕:登陸

B界面包含兩個輸入框和一個登陸按鈕:用戶名和密碼輸入框、登陸按鈕。

要求,從A界面傳遞一個字符串,B界面能夠顯示。

B界面輸入的用戶名和密碼,在點擊登陸後,可以在A界面顯示。


首先,我們看下A界面的界面:



    
    
上邊包含一個按鈕,這個按鈕定義了一個onClick屬性,設置了點擊方法:openActivity


然後,我們編寫A界面的java調用代碼(MainActivity.java):

package cn.itcast.activitys;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    public void openActivity(View v){ //在
    	Intent intent = new Intent(this , OtherActivity.class);
    	
    	Bundle bundle = new Bundle();
    	bundle.putString("result", "我是從MainActivity傳遞過來的參數");
    	intent.putExtras(bundle);
    	
    	startActivityForResult(intent, 200); //兩個參數:第一個是意圖對象,第二個是請求碼requestCode
    }

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		String name="",password="";
		if(resultCode == 30){  //判斷返回碼是否是30
			name = data.getStringExtra("name").toString();
			password = data.getStringExtra("password").toString();
			Toast.makeText(this, "您登陸的用戶名是:"+name+",密碼是:"+password, 1).show();
		}	
		super.onActivityResult(requestCode, resultCode, data);		
	}
    
}
在openActivity(View v)這個方法中,我們定義了一個Bundle對象,然後傳入一個名為“result”的屬性參數,然後放在intent對象中,通過startActivityForResult(Intent intent,int requestCode)這個方法進行傳遞。可以看出我們傳遞到了OtherActivity.java這個文件了


然後,我們要先看下OtherActivity.java裡邊的代碼:

package cn.itcast.activitys;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class OtherActivity extends Activity {
	private EditText name;
	private EditText password;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.otheractivity);
		
		Intent intent = getIntent(); //用於激活它的意圖對象:這裡的intent獲得的是上個Activity傳遞的intent
		Bundle bundle = intent.getExtras();
		String result = bundle.getString("result");
		Toast.makeText(this, result, 1).show();
	}
	
	public void closeActivity(View v){
		Intent data = new Intent();
		name = (EditText)this.findViewById(R.id.name);
		password = (EditText)this.findViewById(R.id.password);
	
		data.putExtra("name", name.getText().toString());
		data.putExtra("password", password.getText().toString());
		setResult(30, data); //設置返回數據 
		this.finish(); //關閉當前Activity	
		
	}
}
在onCreae()方法中,我們調用Toast對象把獲得的參數在界面中顯示出來。

然後我們調用otheractivity.xml界面中的按鈕的onClick方法來調用closeActivity()方法。

通過這個方法,我們可以把文本框中輸入的用戶名和密碼通過setResult(int resultCode,Intent intent)方法傳遞回A界面,調用this.finish()關閉當前界面。


接下來,我們看下B界面的源碼:otheractivity.xml




    
    
     
     
    


當調用this.finish()方法後,B界面結束,返回A界面。

我們可以看到,在MainActivity.java中有一個重寫的方法:onActivityResult()。這個方法是系統提供的,可以在“右鍵—>source—>Override/Implement Methods”中找到這個方法並重寫。

這個方法在setResult()返回後調用,我們在其中判斷返回碼是否是在OtherActivity.java中傳遞過來的30,如果是的話,就把用戶名和密碼用Toast對象顯示出來。





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