با یک سری دیگه از آموزش های قدم به قدم با مونو در خدمت شما هستیم در آموزش قبلی با فعالیت ها (Activities) در زامارین آشنا شدیم در آموزش با نحوه انتقال داده بین فعالیت ها آشنا خواهیم شد .
انتقال داده بین Activities

پس از ایجاد پروژه اندروید در ویژوال استادیو یا زامارین استادیو با اولین فعالیت به نام MainActivity مواجه خواهیم شد سپس یک فعالیت دیگه بنام Activity2 ایجاد نمایید پس در رویداد کلیک دکمه در فعالیت اول کدهای زیر را بنویسید

button.Click += delegate {
       var activity2 = new Intent (this, typeof(Activity2));
       activity2.PutExtra ("MyData", "Data from Activity1");
       StartActivity (activity2);
};

همانطور که در مثال بالا مشخص است ما میتوانیم با تابع PutExtra  داده های خود را به Intent وارد کرده و از این طریف به فعالیت مورد نظر انتقال دهیم سپس در فعالیت دوم برای بدست اوردن این مقادیر در رویداد OnCreate کدهای زیر را بنوسید همانطور که مشاهده می کنید برای بدست آوردن داده از Intent از دستور  Intent.GetStringExtra استفاده خواهیم کرد

string text = Intent.GetStringExtra ("MyData") ?? "Data not available";

اگر تا اینجا مباحث برایتان گنگ بوده نگران نباشید در ادامه این مبحث را در قالب یک پروژه ادامه خواهیم داد
ویژوال استادیوی خود را باز نمایید یک پروژه اندروید ایجاد نمایید
انتقال داده بین Activities
در پوشه Resources به پوشه layout رفته و بر روی فایل Main.axml دوبار کلیک نمایید آن را بصورت زیر تغییر دهید تا کاربر بتواند مقداری را که قصد ارسال آن را دارد بنویسد

<?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"
    android:background="@android:color/darker_gray">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/MessageEditText" />
    <Button
        android:id="@+id/MyButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="ارسال داده " />
</LinearLayout>

انتقال داده بین Activities
بعد از این مرحله نیاز است تا یک لایه جدید به نام Page2.axml به پروژه اضافه کنیم تا مقدار ارسالی را نمایش دهد برای همین بر روی پوشه layout راست کلیک کرده و گزینه Add New Item را انتخاب می کنیم حالا از لیست Android Layout را انتخاب و نام آن را Page2.axml می گزاریم
انتقال داده بین Activities
طراحی این لایه بصورت زیر خواهد بود

<?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"
    android:minWidth="25px"
    android:minHeight="25px">
    <TextView
        android:text="Intent Data"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/Data" />
</LinearLayout>

انتقال داده بین Activities
پس از طراحی لایه ها نوبت به پیاده سازی فعالیت ها می شود فعالیت اصلی ما که همان MainActivity.cs است از قبل در پروژه ما وجود دارد فقط کافیست در رویداد کلیک کدهای زیر را وارد نماییم

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace SendDataBetweenActivities
{
    [Activity(Label = "ارسال داده بین فعالیت ها", MainLauncher = true, Icon = "@drawable/icon")]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);
            Button button = FindViewById<Button>(Resource.Id.MyButton);
            button.Click += Button_Click;
        }
        private void Button_Click(object sender, EventArgs e)
        {
            var messageEditText = this.FindViewById<EditText>(Resource.Id.MessageEditText);
            var intent = new Intent(this, typeof(Page2Activity));
            intent.PutExtra("data", messageEditText.Text);
            StartActivity(intent);
        }
    }
}

خوب فعالیت اول ما آمادست و پس از کلیک کاربر بر روی دکمه ارسال داده مقداری که در EditText وارد کرده برای فعالیت دیگر ارسال خواهد تا اینجا هنوز پروژه ما کامل نیست و ما برای طراحی Page2.axml نیاز به یک فعالیت داریم پس برای این کار بر روی نا م پروژه راست کلیک و Add New Item را انتخاب و یک Activity بنام Page2Activity.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 SendDataBetweenActivities
{
    [Activity(Label = "Page2Activity")]
    public class Page2Activity : Activity
    {
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Page2);
            var titleToShow = Intent.GetStringExtra("data");
            var titleTextView = this.FindViewById<TextView>(Resource.Id.Data);
            if (string.IsNullOrEmpty(titleToShow))
                titleToShow = "داده ای وجود ندارد";
            titleTextView.Text = titleToShow;
        }
    }
}

اگر نگاه به کدهای قسمت بالا بیاندازید در تابع OnCreate که اولین تابعی است که در زمان شروع به کار یک فعالیت اجرا خواهد شد ما چک کردیم تا ببینیم آیا داده ای ارسال شده است یا نه اگر ارسال شد در TextView نمایش خواهیم داد وگرنه پیغام داده ای وجود ندارد برای کاربرنمایش داده می شود خوب کار ما تا اینجا به پایان رسیده کافیست خروجی این برنامه را چک نمایید برای این کار برنامه در صورت نصب Xamiran Android Player آن را اجرا لیست دستگاه های نصب شده بر روی سیستم نمایش داده خواهد شد همانند تصویر زیر
انتقال داده بین Activities
دستگاه مورد نظر را انتخاب و بر روی آیکون پلی کلیک نمایید تا دستگاه بر روی شبیه ساز اجرا شود پس از بالا آمدن اندروید تغییراتی در ویژوال استادیو ظاهر خواهد شد و نام دستگاه مورد نظر به لیست اجرا افزوده می شود
انتقال داده بین Activities
کافیست بر روی دستگاه کلیک نماید تا کار کامپایل کد های شما و در نتیجه خروجی برنامه شما به شبیه ساز منتقل و در آنجا نصب شود تا شما بتوانید خروجی برنامه خود را مشاهده نمایید
انتقال داده بین Activities
خوب کافیست مقداری که می خواهد ارسال کنید را نوشته و بر روی دکمه ارسال داده کلیک نمایید خروجی همانند تصویر زیر خواهد بود
انتقال داده بین Activities
همانطور که مشاهده می کنید نوشته monoandroid.ir از صفحه اول انتقال و در این صفحه مشاهده شده است
شما می توانید کل پروژه را از اینجا دانلود نمایید
به پایان یکی دیگه از سری آموزش های قدم به قدم با مونو رسیدیم امیدوارم مفید بوده باشد همچنان منتظر نظرات شما هستیم

منبع : xamarin.com
25 پست
محمدزاده
سابقه 10 ساله برنامه نویسی مایکروسافت شامل C# , WPF , ASP.Net , Asp.Net Mvc و چند سال اندروید کار کردم تا اینکه زامارین دست به کار شد الان 3 ساله برنامه های اندرویدم رو با ویژوال استادیو مینویسم و لذت میبرم و دوست دارم این لذت رو با دیگران شریک باشم
برچسب ها: , , , , , ,
مطالب مرتبط
مطالب نویسنده
مطالب مشابه
آشنایی با Services در زامارین آشنایی با Services در زامارین | روز ۱۳ پنج شنبه ۲۱ آبان ۱۳۹۴
مونو اندروید Activities در زامارین | روز ۱۱ چهارشنبه ۲۰ آبان ۱۳۹۴
دیدگاه کاربران

برای نوشتن دیدگاه میتوانید به حساب کاربری خود وارد شوید ورود ارسال نظر بصورت مهمان
ارسال نظر (مهمان):