Intereting Posts
Android पर मूल कैमरा ध्वनि कैसे खेलें फोटो / छवि-टू-स्केच एल्गोरिथम एक जेएनआई विधि पर एक स्ट्रिंग सरणी लौटें उपयोगकर्ता द्वारा फोन को घुमाए जाने और अर्रे एडाप्टर में सभी डेटा रखने पर सूची दृश्य वस्तुओं को बनाए रखने का अच्छा समाधान एक एंड्रॉइड ऐप में जावा कंपाइलर और डीईएक्स कनवर्टर को कैसे कार्यान्वित करें? एंड्रॉइड चार्ट: ऐंचैन्गेंगइन या एंड्रॉइड प्लॉट? एंड्रॉइड स्टूडियो – श्रेय सिंक त्रुटि एंड्रॉइड कैलेंडरदृश्य क्लास नहीं मिला एंड्रॉइड में मलयालम फ़ॉन्ट? पृष्ठभूमि में ईमेल को डेटा भेजें RxJava-Android का उपयोग करके कई नेस्टेड एएसआईएनसी कॉल कैसे प्रतीक्षा करें? एंड्रॉइड में आकृतियों के अंदर मल्टीप आकार एंड्रॉइड 4.4 में ऑन-ऍक्टिवेटिव रीसल्ट में फ़ाइल पथ कैसे प्राप्त करें मैं गेम गेम सेवाओं को स्टार्टअप पर स्वचालित रूप से साइन इन करने के लिए कैसे कर सकता / सकती हूं? कैसे php सर्वर से एंड्रॉइड मोबाइल से जेएसएन डेटा पाने के लिए

एकाधिक बटन के लिए एंड्रॉइड एक ऑनक्लिक विधि?

मैंने एंड्रॉइड में प्रोग्राम शुरू किया, मेरे पास एक ही गतिविधि में 3 बटन हैं I

मैंने कुछ उदाहरण कोड देखे हैं जो सभी बटनों पर एक ही OnClick ईवेंट आवंटित करते हैं (भले ही वे पूरी तरह से अलग-अलग कार्रवाई करते हों) और विधि Switch(id) केस केस केस में …

बेहतर दृष्टिकोण क्या है? एक onClick विधि और स्विचन या कई तरीकों, प्रत्येक बटन के लिए एक?

धन्यवाद।

Solutions Collecting From Web of "एकाधिक बटन के लिए एंड्रॉइड एक ऑनक्लिक विधि?"

यदि आप कोडिंग लाइन को कम करना चाहते हैं तो View's OnClick() with switch statement उपयोग करें और यदि आप अलग से सभी क्लिक को संभाल करना चाहते हैं (आसानी से कोड को समझने और बनाए रखने के लिए) तो सभी button's onClick(). उपयोग button's onClick().

अद्यतन करें:

यदि आपने अपनी गतिविधि लेआउट xml फ़ाइल में बटन को घोषित किया है, तो android:onClick="" लिखने के बजाय android:onClick="" सभी बटनों के लिए उसी विधि का नाम दें और अपनी गतिविधि में उस पद्धति को लागू करें। " अब आपके पास सभी बटन के लिए एक विधि है और उस विधि में आईडी के साथ अलग-अलग बटन हैं

उदाहरण:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:onClick="buttonOnClick" android:layout_height="wrap_content" android:text="Hello, I am a Button 1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:onClick="buttonOnClick" android:layout_height="wrap_content" android:text="Hello, I am a Button 2" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:onClick="buttonOnClick" android:layout_height="wrap_content" android:text="Hello, I am a Button 3" /> </LinearLayout> 

अब आपकी गतिविधि लागू करें buttonOnClick में पर क्लिक करें,

 public void buttonOnClick(View view) { switch(view.getId()) { case R.id.button1: // Code for button 1 click break; case R.id.button2: // Code for button 2 click break; case R.id.button3: // Code for button 3 click break; } } 

या आप अपनी गतिविधि में गतिशील रूप से जोड़े गए बटनों के लिए एक ही स्विच केस लागू कर सकते हैं, जैसे कि बटन के बजाय buttonOnClick आपको कार्यान्वित किए गए दृश्य के OnClickListerner's onClick का उपयोग करना है

इस तरह का प्रयोग करें:

 @Override public void onCreate(Bundle savedInstanceState) { button1.setOnClickListener(onClickListener); button2.setOnClickListener(onClickListener); button3.setOnClickListener(onClickListener); } private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View v) { switch(v.getId()){ case R.id.button1: //DO something break; case R.id.button2: //DO something break; case R.id.button3: //DO something break; } } }; 
 this.btnAddFriedtoFacebook = (Button) this.findViewById(R.id.btnAddFriedtoFacebook); this.btnAddFriedtoFacebook.setOnClickListener(this.backButtonClickListener); public OnClickListener backButtonClickListener = new OnClickListener() { public void onClick(final View view) { if (view == MatchInfoActivity.this.btnBack) { MatchInfoActivity.this.finish(); } if( view == MatchInfoActivity.this.btnAddFried){ Intent i = new Intent(Intent.ACTION_VIEW); MatchInfoActivity.this.startActivity(i); } if( view == MatchInfoActivity.this.btnAddBuddy){ Intent i = new Intent(Intent.ACTION_VIEW); MatchInfoActivity.this.startActivity(i); } } }; 

यहाँ एक अच्छा तरीका है

मुझे लगता है कि onClick xml (लेआउट) में पंजीकृत करना बेहतर तरीका है

संपादित करें:

संबंधित धागे मिला:

  1. एंड्रॉइड में बटन घटनाओं को परिभाषित करने के लिए सर्वश्रेष्ठ अभ्यास
  2. यूआई कार्यक्रमों को संभालने के लिए सर्वोत्तम अभ्यास

XML लेआउट में पंजीकृत ऑब्जेक्ट पर क्लिक करें और फिर उसे कोड में संभाल लें। ऐसा मैं कैसे करूँगा:

 <Button android:id="@+id/btplus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click me" android:onClick="onBtnClicked"> 

कक्षा में विधि

 public void onBtnClicked(View v) { switch (v.getId()) { case R.id.btplus: Toast.makeText(getApplicationContext(), "Plus is clicked" + "+", Toast.LENGTH_SHORT).show(); break; case R.id.btminu: Toast.makeText(getApplicationContext(),"Minus is clicked" + "-", Toast.LENGTH_SHORT).show(); break; default: break; } } 

नोगुयेन के उत्तर के लिए थोड़ा अतिरिक्त।

 findViewById(R.id.buttonOne).setOnClickListener(buttonClickListener); .... .... .... .... findViewById(R.id.buttonN).setOnClickListener(buttonClickListener); private View.OnClickListener buttonClickListener = new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.buttonOne: // do something break; .... .... .... .... case R.id.buttonN: // do something break; } } }; 

यह उपयोगी हो सकता है, यदि आप बटन वेरिएबल को इनिशियलाइज़ नहीं करना चाहते हैं, लेकिन बटन क्लिक ईवेंट को ट्रैक करना चाहते हैं धन्यवाद!