Event Handler Implementation for only OnClick Event

Event Handler Implementation for only OnClick Event – अभी तक हमने जितने भी Event Handling Mechanism को देखा वे सभी विभिन्‍न प्रकार के Events को Handle कर सकते हैं। लेकिन इस तरीके के अन्‍तर्गत हम केवल OnClick Event को ही Handle कर सकते हैं और इस तरीके को विषेश रूप से मूलत: Android Apps के लिए ही Develop किया गया है क्‍योंकि किसी भी Android App में विभिन्‍न UI Controls द्वारा सबसे ज्‍यादा OnClick Event ही Fire किया जाता है और हमें हमारे Android App में Mostly इसी Event को Handle करना होता है।

पिछले चारों तरीकों में हमारे Android App की Layout FileBackend Java File में Directly कोई Link नहीं था और सभी Event Handler MethodsEvent Source Controls एक दूसरे से पूरी तरह से स्‍वतंत्र थे। लेकिन इस तरीके के अन्‍तर्गत हमें दोनों Files में कुछ Code लिखने पड़ते हैं जिनके माध्‍यम से ये तय होता है कि किस Event Source के Events को कौनसा Event Handler Response करेगा और Event Source व Event Handler को आपस में Bind करने के लिए हमें android:onClick Attribute को Use करना होता है जो कि Value के रूप में किसी Event Handler Method का नाम Accept करता है।

उदाहरण के लिए यदि हम हमारे Simple Calculator App के R.id.btnAdd Layout ID वाले Button Control के OnClick Event के लिए clickHandler नाम का Callback Event Handler Setup करना चाहें, तो सबसे पहले हमें हमारी Layout File में R.id.btnAdd Layout ID वाले Button Control में android:onClick=“clickHandler” Attribute को Specify करना होगा और फिर अपनी Backend Java File में clickHandler() नाम का Callback Method Implement करना होगा जो कि R.id.btnAdd Layout ID वाले Button को Click करने पर Execute होगा।

Event Handing का ये तरीका काफी आसान है और .NET के WPF (XAML)Java के JavaFX आधारित GUI Applications में विभिन्‍न प्रकार के Events को इसी तरीके से Handle किया जाता है। लेकिन Android के अन्‍तर्गत हम केवल OnClick Event को ही इस तरीके से Handle कर सकते हैं और OnClick के अलावा किसी भी अन्‍य Event को Handle करने के लिए हमें उन्‍हीं चारों में से किसी एक या अधिक तरीके को Use करना पड़ता है, जिन्‍हें पिछले Sections में विस्‍तार से Discuss किया है।

यदि हम इस तरीके को Use करते हुए अपने Simple Calculator Example को Recreate करें, तो हमारा Modified Example कुछ निम्‍नानुसार होगा-

File Name:  strings.xml

<resources>
     <string name="app_name">Simple Calculator</string>
     <string name="fn">First Number</string>
     <string name="sn">Second Number</string>
     <string name="result">Result</string>
 
     <string name="add">+</string>
     <string name="sub">-</string>
     <string name="mul">x</string>
     <string name="div">/</string>
     <string name="Rem">%</string>
 
     <dimen name="layoutPadding">5dp</dimen>
 </resources>

File Name:  activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:padding="@dimen/layoutPadding"
     tools:context="com.bccfalna.arithmetic.MainActivity">
 
     <TextView
         android:id="@+id/tvFN"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/sn"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintTop_toTopOf="@+id/etFN"
         android:layout_marginTop="22dp" />
 
     <TextView
         android:id="@+id/tvSN"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="25dp"
         android:text="@string/fn"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/tvFN" />
 
     <EditText
         android:id="@+id/etFN"
         android:layout_width="0dp"
         android:layout_height="39dp"
         android:layout_marginLeft="40dp"
         android:layout_marginStart="40dp"
         android:layout_marginTop="8dp"
         android:ems="10"
         android:inputType="numberDecimal"
         android:text="0"
         app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintLeft_toRightOf="@+id/tvFN"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
     <TextView
         android:id="@+id/tvRes"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="18dp"
         android:text="@string/result"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/tvSN" />
 
     <EditText
         android:id="@+id/etSN"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="5dp"
         android:ems="10"
         android:inputType="numberDecimal"
         android:text="0"
         app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintLeft_toLeftOf="@+id/etFN"
         app:layout_constraintRight_toRightOf="@+id/etFN"
         app:layout_constraintTop_toBottomOf="@+id/etFN" />
 
     <TextView
         android:id="@+id/tvResult"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginTop="5dp"
         android:textSize="25sp"
         android:textStyle="bold"
         app:layout_constraintLeft_toLeftOf="@+id/etSN"
         app:layout_constraintRight_toRightOf="@+id/etFN"
         app:layout_constraintTop_toBottomOf="@+id/etSN"
         app:layout_constraintHorizontal_bias="0.0" />
 
     <Button
         android:id="@+id/btnAdd"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/add"
         app:layout_constraintRight_toLeftOf="@+id/btnSub"
         app:layout_constraintTop_toTopOf="@+id/btnSub"
         android:onClick="clickHandler" />
 
     <Button
         android:id="@+id/btnSub"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/sub"
         app:layout_constraintRight_toLeftOf="@+id/btnMul"
         app:layout_constraintTop_toTopOf="@+id/btnMul"
         android:onClick="clickHandler" />
 
     <Button
         android:id="@+id/btnMul"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/mul"
         app:layout_constraintRight_toLeftOf="@+id/btnDiv"
         app:layout_constraintTop_toTopOf="@+id/btnDiv"
         android:onClick="clickHandler" />
 
     <Button
         android:id="@+id/btnDiv"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/div"
         app:layout_constraintTop_toTopOf="@+id/btnRem"
         app:layout_constraintRight_toLeftOf="@+id/btnRem"
         android:onClick="clickHandler" />
 
     <Button
         android:id="@+id/btnRem"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/Rem"
         app:layout_constraintTop_toBottomOf="@+id/tvRes"
         android:layout_marginTop="5dp"
         app:layout_constraintRight_toRightOf="parent"
         android:onClick="clickHandler" />
 </android.support.constraint.ConstraintLayout>

File Name:  MainActivity.java

package com.bccfalna.arithmetic;
 
 import android.app.Activity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.TextView;
 
 public class MainActivity extends Activity{
     EditText etFN;
     EditText etSN;
     TextView tvResult;
     double fn;
     double sn;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
     }
 
     public void clickHandler(View btnClicked) {
         etFN = (EditText) findViewById(R.id.etFN);
         etSN = (EditText) findViewById(R.id.etSN);
         tvResult = (TextView) findViewById(R.id.tvResult);
 
         fn = Double.parseDouble(etFN.getText().toString());
         sn = Double.parseDouble(etSN.getText().toString());
 
         switch (btnClicked.getId()) {
             case R.id.btnAdd:
                 tvResult.setText(String.valueOf(fn + sn));
                 break;
 
             case R.id.btnSub:
                 tvResult.setText(String.valueOf(fn - sn));
                 break;
 
             case R.id.btnMul:
                 tvResult.setText(String.valueOf(fn * sn));
                 break;
 
             case R.id.btnDiv:
                 tvResult.setText(String.valueOf(fn / sn));
                 break;
 
             case R.id.btnRem:
                 tvResult.setText(String.valueOf(fn % sn));
                 break;
 
             default:
                 // Nothing to do
         }
     }
 }

जब हम इस Modified Event Handler Mechanism पर आधारित Android App को Run करते हैं, तब भी हमें Exactly वैसा ही Output प्राप्‍त होता है, जैसा पिछले Sections में Discuss किए गए अन्‍य Event Handling Mechanism द्वारा प्राप्‍त होता है।

इस प्रकार से हमने इस Chapter में कुल 5 Event Handling Mechanisms को Discuss किया जो कि एक ही जरूरत को 5 अलग तरीकों से Fulfill करने की सुविधा देते हैं। अब किस तरह की जरूरत को पूरा करने के लिए आपको कौनसा तरीका Use करना चाहिए, ये पूरी तरह से आप पर निर्भर करता है। लेकिन फिर भी यदि आपको केवल OnClick Event को ही Handle करना हो, तो पांचवा तरीका सबसे आसान तरीका है।

चूंकि Java एक बहुत ही Dynamic प्रकार की Programming Language है, इसलिए हम Event Handling के लिए उपरोक्‍तानुसार Discussed कुल 5 तरीकों को ही Use कर सकते हैं, ऐसा भी नहीं है बल्कि हम अपनी जरूरत के अनुसार नए तरीके भी Create कर सकते हैं।

लेकिन हमें हमेंशा अपने Codes को Easy to Understand व Generic रखना चाहिए, ताकि भविष्‍य में जब भी कभी जरूरत पड़े, उसे आसानी से Modify या Extend करके अपने Application की Functionalities को Improve व Extend किया जा सके और उपरोक्‍तानुसार Discussed पांचों तरीके काफी Common हैं। इसलिए जहां तक सम्‍भव हो आपको हमेंशा इन्‍हीं में से किसी एक या अधिक तरीके का प्रयोग करते हुए ही अपने Android App की Event Handling करनी चाहिए।

अभी तक हमने जितने भी Examples Create किए हैं, उन सभी में केवल onClick() Callback Method को ही Implement किया है, जो कि कोई मान Return नहीं करता। लेकिन कुछ अन्‍य Event Listener Methods एक Boolean Value Return करते हैं। अब कोई Callback Method कोई Boolean Value Return करेगा या नहीं, ये निम्‍नानुसार कुछ कारणों पर निर्भर करता है-

  • onLongClick() and onKey() Callback
  • onTouch() Callback
Event Handler Implementation within Activity Class
Event Capturing and Event Bubbling in Android

Android in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Android in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Android in Hindi | Page: 628 | Format: PDF

BUY NOW DOWNLOAD READ ONLINE

Download All EBooks

सभी हिन्दी EBooks के DEMO DOWNLOAD LINKS प्राप्‍त करें, अपने EMail पर।

Register करके Login करें। इस Popup से छुटकारा पाएें।