با یک سری دیگه از آموزش های قدم به قدم با مونو در خدمت شما هستیم در آموزش قبلی با فعالیت ها (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";
اگر تا اینجا مباحث برایتان گنگ بوده نگران نباشید در ادامه این مبحث را در قالب یک پروژه ادامه خواهیم داد
ویژوال استادیوی خود را باز نمایید یک پروژه اندروید ایجاد نمایید
در پوشه 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>
بعد از این مرحله نیاز است تا یک لایه جدید به نام Page2.axml به پروژه اضافه کنیم تا مقدار ارسالی را نمایش دهد برای همین بر روی پوشه layout راست کلیک کرده و گزینه Add New Item را انتخاب می کنیم حالا از لیست Android Layout را انتخاب و نام آن را Page2.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: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>
پس از طراحی لایه ها نوبت به پیاده سازی فعالیت ها می شود فعالیت اصلی ما که همان 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 آن را اجرا لیست دستگاه های نصب شده بر روی سیستم نمایش داده خواهد شد همانند تصویر زیر
دستگاه مورد نظر را انتخاب و بر روی آیکون پلی کلیک نمایید تا دستگاه بر روی شبیه ساز اجرا شود پس از بالا آمدن اندروید تغییراتی در ویژوال استادیو ظاهر خواهد شد و نام دستگاه مورد نظر به لیست اجرا افزوده می شود
کافیست بر روی دستگاه کلیک نماید تا کار کامپایل کد های شما و در نتیجه خروجی برنامه شما به شبیه ساز منتقل و در آنجا نصب شود تا شما بتوانید خروجی برنامه خود را مشاهده نمایید
خوب کافیست مقداری که می خواهد ارسال کنید را نوشته و بر روی دکمه ارسال داده کلیک نمایید خروجی همانند تصویر زیر خواهد بود
همانطور که مشاهده می کنید نوشته monoandroid.ir از صفحه اول انتقال و در این صفحه مشاهده شده است
شما می توانید کل پروژه را از اینجا دانلود نمایید
به پایان یکی دیگه از سری آموزش های قدم به قدم با مونو رسیدیم امیدوارم مفید بوده باشد همچنان منتظر نظرات شما هستیم
- ۲۱ آبان ۱۳۹۴ ۰۰:۰۸
- 0
- محمدزاده
- قدم به قدم با مونو
- 2,657 بازدید