Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android 多個Activity之間的通信與數據傳遞的Bundle對象的使用

Android 多個Activity之間的通信與數據傳遞的Bundle對象的使用

編輯:高級開發

在Activity 中調用另一個Activity ,但若需要在調用 另外一個Activity 的同時傳遞數據,那麼就需要利用android.os.Bundle 對象封裝數據的能力,將欲傳遞的數據或參數通過Bundle 來傳遞不同Intent 之間的數據.

  本范例將設計一個簡單的個人信息表單,有姓名(EditText )和性別(RadioButton )還有一個提交按鈕(Button ),當點擊提交按鈕時,另外一個頁面將顯示個人信息.

  下面是我們所涉及有變動的代碼:

  首先是主頁面布局main.xml 和第二個頁面的布局mylayout.XML

  main.XML 這裡我們用了AbsoluteLayout布局大家 要注意哦

  < ?XML version="1.0" encoding="utf-8"?>

  < AbsoluteLayout XMLns:android="http://schemas.android.com/apk/res/android"

  android:orIEntation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  < TextVIEw

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="Person information"

  />

  < TextVIEw

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="Name:"

  android:layout_y="30px"

  />

  < TextVIEw

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="Gender:"

  android:layout_y="80px"

  />

  < EditText

  android:id="@+id/ed1"

  android:layout_width="200px"

  android:layout_height="wrap_content"

  android:layout_x="50px"

  android:layout_y="20px"

  />

  < RadioButton

  android:id="@+id/rb1"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="man"

  android:layout_x="60px"

  android:layout_y="65px"

  android:checked="true"//默認它是被選中的

  android:layout_y="65px"

  />

  < Button

  android:id="@+id/bt1"

  android:layout_width="wrap_content"

  android:layout_height="wrap_content"

  android:text="confirm"

  android:layout_y="120px"

  />

  < /AbsoluteLayout>

  在main.xml 同一目錄下建另外一個頁面布局mylayou.XML

  < ?XML version="1.0" encoding="utf-8"?>

  < LinearLayout XMLns:android="http://schemas.android.com/apk/res/android"

  android:orIEntation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  < TextVIEw

  android:id="@+id/mytv"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="@string/hello"

  />

  < /LinearLayout>

  下面是程序的核心代碼BundleDemo.java 和BundleDemo1.Java

  BundleDemo.Java:

  package com.android.test;

  import android.app.Activity;

  import android.content.Intent;

  import android.os.Bundle;

  import android.view.VIEw;

  import android.widget.Button;

  import android.widget.EditText;

  import android.widget.RadioButton;

  public class BundleDemo extends Activity {

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentVIEw(R.layout.main);

  //以findVIEwById()取得Button對象,並添加響應

  Button bt1 = (Button)findVIEwById(R.id.bt1);

  bt1.setOnClickListener(new Button.OnClickListener(){

  接上頁

  public void onClick(VIEw v){

  //取得name

  EditText et = (EditText)findVIEwById(R.id.ed1);

  String name = et.getText().toString();

  //取得Gender

  String sex="";

  RadioButton rb1 = (RadioButton)findVIEwById(R.id.rb1);

  if(rb1.isChecked())

  {

  sex="man";

  }else{

  sex="woman";

  }

  //new一個Intent對象,用法上節已經講過了

  Intent intent = new Intent();

  intent.setClass(BundleDemo.this, BundleDemo1.class);

  //new一個Bundle對象,並將要傳遞的數據導入,這裡是重點Map< String,String>結構哦

  Bundle bundle = new Bundle();

  bundle.putString("name",name);

  bundle.putString("sex", sex);

  //將Bundle對象assign給Intent

  intent.putExtras(bundle);

  //調用Activity BundleDemo1

  startActivity(intent);

  }

  });

  }

  }

  在BundleDemo.java 同一目錄建立BundleDemo1.Java :

  package com.android.test;

  import android.app.Activity;

  import android.os.Bundle;

  import android.widget.TextVIEw;

  public class BundleDemo1 extends Activity {

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentVIEw(R.layout.mylayout);

  //取得Intent中的Bundle對象

  Bundle bundle = this.getIntent().getExtras();

  //取得Bundle對象中的數據

  String name = bundle.getString("name");

  String sex = bundle.getString("sex");

  //設置輸出文字

  TextView mytv = (TextView)findVIEwById(R.id.mytv);

  mytv.setText("you name is:" + name + " you gender is:"+sex);

  }

  }

  最後我們還是要在androidManifest.XML 中加入BundleDemo1 這個Activity ,一定要加,不然後果自負呵呵~

  < ?XML version="1.0" encoding="utf-8"?>

  接上頁

  < manifest XMLns:android="http://schemas.android.com/apk/res/android"

  package="com.android.test"

  android:versionCode="1"

  android:versionName="1.0">

  < application android:icon="@drawable/icon" android:label="@string/app_name">

  < activity android:name=".BundleDemo"

  android:label="@string/app_name">

  < intent-filter>

  < action android:name="android.intent.action.MAIN" />

  < category android:name="android.intent.category.LAUNCHER" />

  < /intent-filter>

  < /activity>

  < activity android:name="BundleDemo1">< /activity>

  < /application>

  < uses-sdk android:minSdkVersion="3" />

  < /manifest>

  執行之,將達到上述效果~今天到此結束,謝謝大家!

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