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

來源:互聯網
上載者:User

Android開發系列(十三):Intent實現Activity之間的轉換以及startActivityForResult傳遞參數
一、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    }@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {String name="",password="";if(resultCode == 30){  //判斷返回碼是否是30name = 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;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.otheractivity);Intent intent = getIntent(); //用於啟用它的意圖對象:這裡的intent獲得的是上個Activity傳遞的intentBundle 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對象顯示出來。





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.