如果需要在额外调用另外一个Activity的同时传递数据,
那么就需要利用Bundle对象封装数据的能力,
将所要传递的数据或参数通过Bundle来传递不同Intent间的数据
Main.axml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/title"
android:layout_width="243px"
android:layout_height="29px"
android:text="@string/title"
android:textSize="24sp"
android:layout_x="36px"
android:layout_y="32px" />
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="37px"
android:text="@string/text1"
android:textSize="18sp"
android:layout_x="40px"
android:layout_y="156px" />
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="29px"
android:text="@string/text2"
android:textSize="18sp"
android:layout_x="40px"
android:layout_y="102px" />
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="cm"
android:textSize="18sp"
android:layout_x="231px"
android:layout_y="157px" />
<Button
android:id="@+id/button1"
android:layout_width="70px"
android:layout_height="48px"
android:text="计算"
android:layout_x="130px"
android:layout_y="232px" />
<RadioGroup
android:id="@+id/sex"
android:layout_width="300px"
android:layout_height="100px"
android:layout_x="97px"
android:layout_y="98px"
android:orientation="horizontal"
android:checkedButton="@+id/sex1">
<RadioButton
android:id="@+id/sex1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男的" />
<RadioButton
android:id="@+id/sex2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女的" />
</RadioGroup>
<EditText
android:id="@+id/height"
android:layout_width="130px"
android:layout_height="wrap_content"
android:textSize="18sp"
android:layout_x="96px"
android:layout_y="142px"
android:numeric="decimal" />
</AbsoluteLayout>
myalyout.axml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_x="50px"
android:layout_y="72px" />
</AbsoluteLayout>
MainActivity.cs
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
namespace Ex03_10
{
[Activity(Label = "Ex03_10", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
int count = 1;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button>(Resource.Id.button1);
button.Click += delegate {
/*取得输入的身高*/
EditText et = (EditText) FindViewById(Resource.Id.height);
double height=double.Parse(et.Text);
/*取得选择的性别*/ String sex="";
RadioButton rb1 = (RadioButton) FindViewById(Resource.Id.sex1);
if(rb1.Checked){ sex="M";}
else{ sex="F"; }
/*new一个Intent对象,并指定class*/
Intent intent = new Intent();
// intent.setClass(EX03_10.this,EX03_10_1.class);
intent.SetClass(this, typeof(Activity1));
/*new一个Bundle对象,并将要传递的数据传入*/
Bundle bundle1 = new Bundle();
bundle1.PutDouble("height", height);
bundle1.PutString("sex", sex);
/*将Bundle对象assign给Intent*/
intent.PutExtras(bundle1);
/*调用Activity EX03_10_1*/
StartActivity(intent);
};
}
}
}
Activity1.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace Ex03_10
{
[Activity(Label = "Activity1")]
public class Activity1 : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
/* 加载main.xml Layout */
SetContentView(Resource.Layout.myalyout);
/* 取得Intent中的Bundle对象 */
Bundle bunde = this.Intent.Extras;
/* 取得Bundle对象中的数据 */
string sex = bunde.GetString("sex");
double height = bunde.GetDouble("height");
/*判断性别 */
String sexText = "";
if (sex.Equals("M"))
{
sexText = "男性";
}
else
{
sexText = "女性";
}
/* 取得标准体重 */
string weight = this.getWeight(sex, height);
/* 设定输出文字 */
TextView tv1 = (TextView)FindViewById(Resource.Id.text1);
tv1.SetText("你是一位" + sexText + "\n你的身高是" + height +
"公分\n你的标准体重是" + weight + "公斤",TextView.BufferType.Normal );
}
/* 以findViewById()取得Button对象,onClickListener */
private String getWeight(String sex, double height)
{
String weight = "";
if (sex.Equals("M"))
{
weight = ((height - 80) * 0.7).ToString();
}
else
{
weight = ((height - 70) * 0.6).ToString();
}
return weight;
}
}
}