الأحد، 28 سبتمبر 2014

الدرس التاسع : إضافة أحداث للأزرار

السلام عليكم ورحمة الله وبركاته
اليوم موعدنا مع درس إضافة أحداث للأزرار
بناء على ما تعلمناه في الدروس السابقة لننشيء مشروع جديد بالمواصفات القادمة

Project name: P0091_OnClickButtons
Build Target: Android 4.0.2
Application name: OnClickButtons
Package name: com.MASAFA.onclickbuttons
Create Activity: MainActivity



أفتح ملف activity_main.xml و أكتب فيه الكود التالي










يحتوي هذا الكود على TextView لإظهرا النص و زرين : OK موافق و Cnacel لإلغاء الأمر و الأن بمنتهي البساطة سنغير نص الأداه TextView  عند النقر على الزر موافق OK .

الأن إذهب إلي الملف 

/P0091_OnClickButtons/src/com/MASAFA/p0091_onclickbuttons/MainActivity.java

و قم بفتحه قم بإضافة الادوات التي قمنا بإنشائها سابقا في داخل هذا الملف عن طريق إستدعاء أسماء الأدوات Classes و قم بعمل declaration أو تصريح لها داخل هذا الملف كما هو موضح في الكود القادم 
TextView tvOut;
Button btnOk;
Button btnCancel;

بعد عمل التصريحات ستجد خطوط حمراء تظهر تحت كل تصريح كما هو مبين في الصورة القادمة


قم بالذهاب إلي يسار الشاشة حيث صورة المصباح الموضوع عليه علامة خطاء حمراء و قم باضلغط عليه و إختار Import TextView كما هو مبين في الصورة القادمة ، و الأن قم بنفس العملية مع الأداه Button و حتي تنتعهي تلك الخطوط الحمراء. 

الأن قم بتوصيل تلك التصريحات بالأدوات التي قمت بإنشائها على Main Activity  عن طريق الدالة findViewById كما هو مبين في الشكل القادم
الأن لديك العناصر tvOut , btnOK , btnCancel و التي تتصل الأن بشكل مباشر مع العناصر على الواجه Activity Main و الأن لنبدأ بإضافة الأحداث عن طريق الدالة setOnClickListener و لكن دعنا نقوم بإنشاء نموذج من الكائن onClickListener و من ثم نقوم بوصيله بشكل غير مباشر مع الأداة btnClick ، ولكن في البداية فم بكتابه الكود التالي بعد أخر سطر كنت قد كتبته.
OnClickListener onClcBtn = new OnClickListener(){  
public void onClick(View v)
{
 
}
};
الأن ستجد الخطوط الحمراء تظهر من جديد تحت الدوال التي إستخدمتها  كما قمت سابقا أذهب إلي أقصي يسار شاشة الكود و ستجد المصباح و العلامة الحمراء و أضغط عليها و قم بتصحيح الأخطاء عن طريق إدراج الدوال المستخمة في بيئة العمل كما هو موضح في الصورة .
الأن قم بكتابة هذا السطر على داخل الدالة onClick 

tvOut.setText("Button OK clicked");

ثم الأن قم بتعريف إستخدام تلك الدالة عن طريق الدالة setOnClickListener و قم بوضعها بعد تلك الدالة من خلال إضافة السطر 
القادم
btnOK.setOnClickListener(onClcBtn);


و بهذا يكون شكل الكود لديك كما هو الكود القادم
package com.MASAFA.p0091_onclickbuttons;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

 
 TextView tvOut;
 Button btnOK;
 Button btnCancel;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  tvOut = (TextView) findViewById(R.id.tvOut);
  btnOK = (Button)  findViewById(R.id.btnOk);
  btnCancel = (Button) findViewById(R.id.btnCancel);
  
  
  OnClickListener onClcBtn = new OnClickListener(){
  
   public void onClick(View v)
   {
    tvOut.setText("Button OK clicked");
   }
  };
  
  btnOK.setOnClickListener(onClcBtn);
 }
 
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

}



الأن قم بالحفظ و أضغط على تشغيل و عند ظهور التطبيق أختار OK و ستري أن النص قد تغير كما هو مبين في الصورة القادمة
الأن قم بعمل نفس الكود السابق للزر cancel و لكن قم بتغير النص مثلا  إلي Button Cancel Click  
و الأن لنستعرض بشكل مختصر ماذا حدث خلال هذا الدرس أو عن ألية عمل الأزرار في تطبيقات أندرويد فا الأزرار وحدها لا يمكنها أن تقوم بعمل حدث معيل بل يلزم لها الأداة listener لكي تنقل الحدث من الدالة إلي الكود المستخدم ، و يتم ربط الأداة أو الزر المستخدم بالأداة listener عن طريق الدالة setOnClickLestener . كما هو موضح بالشكل القادم.
شكرا لمتابعتكم الغالية و إلي اللقاء في الدرس القادم أحمد محمدي