القائمة الرئيسية

الصفحات

11- تعرف على 5 طرق مختلفة لكتابة كود حدث الضغط على الزر في الاندرويد



كما هو معروف إن الغرض من إضافة الزر Button هو استخدامه للضغط عليه ومن ثم عند الضغط عليه يقوم هذا الزر بعمل معين  وسنتعلم كيفية إضافة حدث الضغط للإزرار في الاندرويد لكن قبل أن نبدأ في ذلك لابد أن نفهم كيف يقوم نظام الاندرويد بالتعامل مع حدث الضغط على الزر وسنتعلم ايضا على كيفية كتابة كود حدث الضغط على الزر ب 5 طرق مختلفة.




كيف يقوم نظام الاندرويد بالتعامل مع حدث الضغط على الزر ؟

قبل البدء في كتابة كود حدث الضغط على الزر يجب علينا أولا فهم بعض الأمور الأساسية وهي كيف يقوم نظام الاندرويد بالتعامل مع أي حدث يقوم به المستخدم كـ الضغط على الزر، الكتابة، اللمس، السحب والافلات الخ..

1-View: وهو عبارة عن المكون الذي سيظهر على الشاشة كمثال: الازرار، مربعات النصوص، مربعات الاختيار الخ..

2-Event: وهي عبارة عن حدث يتم حدوثه من خلال تفاعل المستخدم مع العنصر الموجود على الشاشة كمثال: الضغط على الزر ، السحب والافلات على الشاشة ، الكتابة في مربع نص الخ.. ويقوم نظام التشغيل باستقبال هذا الـحدث.

3-Listeners:وهي تقوم باستقبال الevent  من نظام التشغيل المستمعات وتنفيذ الكود المطلوب عند حدوث هذا الحدث. 


ويمكن التعبير عن هذ السناريو بالصورة ادناه:


حيث يتم الضغط على الزر ومن ثم يتم استقبال هذا الحد بواسطة نظام التشغيل ومن ثم إرسال هذا الحدث إلى المستمعات ويتم تنفيذ الكود المطلوب عند الضغط على الزر.

إضافة كود الضغط على الزر ب 5 طرق مختلفة:

يمكن إضافة كود حدث الضغط على الزر ب 5 طرق مختلفة وهي كما يلي:

1-الخاصية onClick:

وهي من اسهل الطرق لإضافة كود حدث الضغط على الزر وذلك عبر إضافة هذه الخاصية للزر الذي نريد إضافة حدث الضغط له:

1-نقوم إولا بالضغط مرة واحدة على الزر الذي نريد إضافة حدث الضغط له.


2-من قائمة الخصائص Properties ونقوم بالذهاب إلى الخاصية onClick ونقوم بإعطائها قيمة نصية كمثال clickButton  (يجب التركيز جيدا على هذا الاسم وحفظه) لإننا سنستخدمه لاحقا وسيكون هذا الاسم للدالة التي سوف تستقبل حدث الضغط على الزر.

وهذه الصورة تبين كيفية إضافة الخاصية  onClick للزر:


11- كيفية إضافة حدث الضغط على الزر بـ 5 طرق مختلفة


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

 }

}

وهكذ نكون قد وصلنا لنهاية الدرس>> رأيك يهمني بالتعيقات