بسم الله الرحمن الرحيم
(رب اشرح لي صدري ويسر لي امري واحلل عقدة من لساني يفقهوا قولي)
السلام عليكم ورحمة الله
سنخصص هذا الدرس بتعلم كيفية ربط الادوات الموجودة على الواجهة مع الـActivity الخاص بها.
كما ذكرنا سابقا أن لكل واجهة (Layout) كلاس خاص بها حيث من خلال الكلاس نتمكن من الوصول الى الادوات الموجودة على الواجهة (Layout).
للوصول الى الادوات المراد استعمالها يجب أن نعرف الـId الخاص بالأدوات حيث من خلالها يتم التعرف على الاداة واستخدامها.
الان لننتقل الى الكلاس MainActivity.cs لنتعرف على خطوات ربط الادوات:
1- يجب تعريف متغيرات او Instances من الادوات التي سنستخدمها، حيث كل أداة عبارة عن كلاس داخل Android.Widget بالشكل التالي:
PHP كود :
EditText _username, _password;
Button _ok, _cancel;
حيث سيكون MainActivity بالشكل التالي:
PHP كود :
using Android.App;
using Android.Widget;
using Android.OS;
namespace TestAndroidApp
{
[Activity(Label = "TestAndroidApp",Theme = "@style/MyCustomTheme", MainLauncher = true)]
public class MainActivity : Activity
{
EditText _username, _password;
Button _ok, _cancel;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
}
}
}
قبل أن ننتقل الى الخطوة التالية يجب أن تعرف أنه لتحميل الواجهة من خلال الـActivity يجب ذكر السطر التالي:
PHP كود :
SetContentView(Resource.Layout.Main);
فمن خلال هذه الدالة يتم ربط الكلاس بالواجهة من خلال اسم الـLayout، وهي بطبيعة الحال Main حيث يتم الوصول الى اسم الواجهة من خلال Resource.Layout. اسم الواجهة.
و
PHP كود :
MainLauncher = true
هي لتحديد الواجهة التي ستظهر أولاً عند تنفيذ التطبيق.
2- ربط الادوات بالتعاريف داخل دالة onCreate:
PHP كود :
_username = FindViewById<EditText>(Resource.Id.userName);
_password = FindViewById<EditText>(Resource.Id.password);
_ok = FindViewById<Button>(Resource.Id.okButton);
_cancel = FindViewById<Button>(Resource.Id.cancelButton);
لكي نصل الى الـId لأداة معينة داخل الواجهة نستخدم دالة FindViewById، حيث كل أداة داخل الـLayout عبارة عن View.
3- حدث Click لأداة okButton و cancelButton: هذا الحدث يكتب بهذا الشكل داخل دالة onCreate
PHP كود :
_ok.Click += delegate
{
if (_username.Text == userName && _password.Text == password)
{
Toast.MakeText(this, "You are logged in", ToastLength.Short).Show();
}
else
{
Toast.MakeText(this, "Try again", ToastLength.Short).Show();
}
};
_cancel.Click += delegate
{
Finish();
};
* يمكن كتابة الاحداث بطرق مختلفة اضافة الى الطريقة أعلاه.
يمكن كتابة الحدث (okButton كمثال) كما موضح أدناه في الكلاس Activity:
PHP كود :
using Android.App;
using Android.Widget;
using Android.OS;
namespace TestAndroidApp
{
[Activity(Label = "TestAndroidApp", Theme = "@style/MyCustomTheme", MainLauncher = true)]
public class MainActivity : Activity
{
EditText _username, _password;
Button _ok, _cancel;
string userName = "Xamarin";
string password = "Android";
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
//
_username = FindViewById<EditText>(Resource.Id.userName);
_password = FindViewById<EditText>(Resource.Id.password);
_ok = FindViewById<Button>(Resource.Id.okButton);
_cancel = FindViewById<Button>(Resource.Id.cancelButton);
_ok.Click += _ok_Click;
_cancel.Click += delegate
{
Finish();
};
}
private void _ok_Click(object sender, System.EventArgs e)
{
if (_username.Text == userName && _password.Text == password)
{
Toast.MakeText(this, "You are logged in", ToastLength.Short).Show();
}
else
{
Toast.MakeText(this, "Try again", ToastLength.Short).Show();
}
}
}
}
4- دالة Toast هي دالة لعرض رسالة ما للمستخدم.
نلقاكم في درس آخر ان شاءالله
والحمد لله رب العالمين