كما هو معروف إن الغرض من إضافة الزر Button هو استخدامه للضغط عليه ومن ثم عند الضغط عليه يقوم هذا الزر بعمل معين وسنتعلم كيفية إضافة حدث الضغط للإزرار في الاندرويد لكن قبل أن نبدأ في ذلك لابد أن نفهم كيف يقوم نظام الاندرويد بالتعامل مع حدث الضغط على الزر وسنتعلم ايضا على كيفية كتابة كود حدث الضغط على الزر ب 5 طرق مختلفة.
كيف يقوم نظام الاندرويد بالتعامل مع حدث الضغط على الزر ؟
قبل البدء في كتابة كود حدث الضغط على الزر يجب علينا أولا فهم بعض الأمور الأساسية وهي كيف يقوم نظام الاندرويد بالتعامل مع أي حدث يقوم به المستخدم كـ الضغط على الزر، الكتابة، اللمس، السحب والافلات الخ..
1-View: وهو عبارة عن المكون الذي سيظهر على الشاشة كمثال: الازرار، مربعات النصوص، مربعات الاختيار الخ..
2-Event: وهي عبارة عن حدث يتم حدوثه من خلال تفاعل المستخدم مع العنصر الموجود على الشاشة كمثال: الضغط على الزر ، السحب والافلات على الشاشة ، الكتابة في مربع نص الخ.. ويقوم نظام التشغيل باستقبال هذا الـحدث.
3-Listeners:وهي تقوم باستقبال الevent من نظام التشغيل المستمعات وتنفيذ الكود المطلوب عند حدوث هذا الحدث.
وهي من اسهل الطرق لإضافة كود حدث الضغط على الزر وذلك عبر إضافة هذه الخاصية للزر الذي نريد إضافة حدث الضغط له:
1-نقوم إولا بالضغط مرة واحدة على الزر الذي نريد إضافة حدث الضغط له.
2-من قائمة الخصائص Properties ونقوم بالذهاب إلى الخاصية onClick ونقوم بإعطائها قيمة نصية كمثال clickButton (يجب التركيز جيدا على هذا الاسم وحفظه) لإننا سنستخدمه لاحقا وسيكون هذا الاسم للدالة التي سوف تستقبل حدث الضغط على الزر.
وهذه الصورة تبين كيفية إضافة الخاصية onClick للزر:
3-Listeners:وهي تقوم باستقبال الevent من نظام التشغيل المستمعات وتنفيذ الكود المطلوب عند حدوث هذا الحدث.
ويمكن التعبير عن هذ
السناريو بالصورة ادناه:
حيث يتم الضغط على الزر ومن ثم يتم استقبال هذا
الحد بواسطة نظام التشغيل ومن ثم إرسال هذا الحدث إلى المستمعات ويتم تنفيذ الكود
المطلوب عند الضغط على الزر.
إضافة كود الضغط على الزر ب 5 طرق مختلفة:
يمكن إضافة كود حدث
الضغط على الزر ب 5 طرق مختلفة وهي كما يلي:
1-الخاصية onClick:
1-نقوم إولا بالضغط مرة واحدة على الزر الذي نريد إضافة حدث الضغط له.
2-من قائمة الخصائص Properties ونقوم بالذهاب إلى الخاصية onClick ونقوم بإعطائها قيمة نصية كمثال clickButton (يجب التركيز جيدا على هذا الاسم وحفظه) لإننا سنستخدمه لاحقا وسيكون هذا الاسم للدالة التي سوف تستقبل حدث الضغط على الزر.
وهذه الصورة تبين كيفية إضافة الخاصية onClick للزر:
3-نقوم بفتح ملف الجافا المرتبط بهذه الـ Activity ونضيف داله بنفس الاسم الذي قمنا بتحديده في الخاصية onClick وتستقبل هذه الدالة بارميتر من نوع View كما في الكود ادناه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | package com.example.buttonclick; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.View; public class MainActivity extends Activity{ private static final String TAG = "mutee"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void clickButton(View arg0) { Log.d(TAG,"The Button was Clicked"); } } |
من الكود أعلاه قمنا بإاضافة دالة clickButton وبداخل الدالة يمكنك كتابة الكود المطلوب تنفيذه عند ضغط المستخدم على الزر على سبيل نريد طباعة طباعة رسالة في logcat.
2-Using Interface
Variable
وفي هذه الطريقة نقوم
بإنشاء دالة الضغط وذلك من خلال الانترفيس OnClickListener التي تحتوي على دالة وحيدة
وهي onClick ولكتابة الكود نقوم بالاتي :
1-نعرف
اوبجكت من الـ button الذي
نريد ان نضغط عليه وذلك من خلال الدالة findViewByid ونكتب
ذلك بداخل الدالة onCreate كما
في الكود ادناه:
Button btn = (Button) findViewById(R.id.button1);
2-ثم نقوم بإنشاء اوبجكت من
الانترفيس OnClickeListener ونعمل اوفرايد للدالة oNclick() ومن ثم كتابة الكود
المراد تنفيذه بداخلها كما في الكود ادناه:
OnClickListener clickme = new OnClickListener() { @Override public void onClick(View arg0) { Log.d(TAG, "The Button Was Clicked"); } };
3-ربط الزر بالاوبجكت الذي قمنا بإنشائه في الخطوة رقم 2 وذلك يكون داخل الدالة onCreate() بالكود ادناه:
btn.setOnClickListener(clickme);
وهكذا يكون الكود الكامل بالشكل التالي:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package com.example.buttonclick; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity{ private static final String TAG = "mutee"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(clickme); } OnClickListener clickme = new OnClickListener() { @Override public void onClick(View arg0) { Log.d(TAG, "The Button Was Clicked"); } }; } |
3-Inner Class
وفي هذه الطريقة نقوم بالاتي:
1-نعرف اوبجكت من الـ
button الذي نريد ان نضغط عليه وذلك من خلال الدالة
findViewByid ونكتب ذلك بداخل الدالة onCreate كما في الكود ادناه:
Button btn = (Button) findViewById(R.id.button1);
2--نقوم
بإنشاء كلاس داخلي يقوم بتنفيذ الانترفيس OnClickListener ونعمل اوفرايد للدالة onClick() ومن ثم كتابة الكود بداخلها:
class ButtonClick implements OnClickListener{
@Override
public void onClick(View arg0) {
Log.d(TAG,"the Button clicked");
}
}
3-تمرير اوبجكت من الكلاس
الداخلي وربطه بالزر من خلال الدالة setOnClickListner كما في الكود ادناه:
btn.setOnClickListener(new ButtonClick());
وهذا الكود الكامل
لهذه الطريقة:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package com.example.buttonclick; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity{ private static final String TAG = "mutee"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new ButtonClick()); } class ButtonClick implements OnClickListener{ @Override public void onClick(View arg0) { Log.d(TAG,"the Button clicked"); } } } |
4-Anonymous
class
وفي هذه الطريقة نقوم
بالاتي
1--نعرف كائن من الـ button الذي نريد ان نضغط عليه وذلك من خلال الدالة findViewByid ونكتب ذلك بداخل الدالة onCreate كما في الكود ادناه:
Button btn = (Button) findViewById(R.id.button1);
2- نقوم بأنشاء Anonymous كائن وربطه بالزر الذي نريد إن نضغط عليه
ونعمل اوفرايد للدالة
onClicke ومن
ثم كتابة الكود المطلوب بداخلها كما الشكل التالي:
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d(TAG, "The Button was clicked");
}
});
وهذا الكود الكامل لهذه الطريقة:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | package com.example.buttonclick; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { private static final String TAG = "mutee"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Log.d(TAG, "The Button was clicked"); } }); } } |
5-Activity
Implements OnClickListener
1-نجعل MainActivty تنفذ الانترفيس بالشكل التالي:
public class MainActivity extends Activity implements OnClickListener
2-عمل
اوفرايد للدالة onClick ومن ثم كتابة الكود المطلوب تنفيذه بداخلها كمل
في الشكل التالي:
@Override public void onClick(View arg0) { Log.d(TAG,"the button was clicked"); }
3-في داخل دالة onCreate نقوم بتمرير الكائن الذي قام
بتنفيذ الانترفيس OnClicklISTENER وهو MainActivity ونقوم بتمرير this للإشارة له كما في الكود
ادناه:
btn.setOnClickListener(this);
ويكون الكود الكامل
لهذه الطريقة بالشكل التالي:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package com.example.buttonclick; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private static final String TAG = "mutee"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.button1); btn.setOnClickListener(this); } @Override public void onClick(View arg0) { // TODO Auto-generated method stub } } |
وهكذ نكون قد وصلنا لنهاية الدرس>> رأيك يهمني بالتعيقات