3.10 MonoForAndroid用户人机界面--不同Activity之间的数据传递

如果需要在额外调用另外一个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;
        }
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值