कोड का उपयोग करके एक बटन क्लिक कैसे अनुकरण करें?


216

मैं एंड्रॉइड में कोड का उपयोग करके एक बटन क्लिक इवेंट को कैसे ट्रिगर कर सकता हूं? जब कोई अन्य घटना घटती है, तो मैं प्रोग्राम क्लिक बटन को ट्रिगर करना चाहता हूं।

वही समस्या मैं सामना कर रहा हूँ

public void onDateSelectedButtonClick(View v){
    /*Something  Alarm Management 
    http://www.java2s.com/Code/Android/Core-Class/Alarmdemo.htm
    copied code from this site*/
}

बटन कोड:

<Button
    android:onClick="onDateSelectedButtonClick"
    android:text="Set notification for this date" />

लेकिन मैं OnClickEvent के बिना उस फ़ंक्शन OnLoadLayout को कॉल करना चाहता हूं


क्या आप कृपया समस्या निर्दिष्ट कर सकते हैं? आप ऐसा क्यों चाहते हैं? क्या आप निष्पादित किए जाने वाले कुछ कोड को ट्रिगर करना चाहते हैं?
व्लादिमीर इवानोव

हां, मैं बटन क्लिक के लिए निष्पादित किए जाने वाले कोड को ट्रिगर करना चाहता हूं।
सैम

जवाबों:


445

एक बेहतर रास्ता है।

View.performClick();

http://developer.android.com/reference/android/view/View.html#performClick ()

यह आपकी सभी समस्याओं का जवाब देना चाहिए। प्रत्येक दृश्य को यह फ़ंक्शन विरासत में मिलता है, जिसमें बटन, स्पिनर आदि शामिल हैं।

बस स्पष्ट करने के लिए, दृश्य में एक स्थिर प्रदर्शन नहीं है () विधि। आपको व्यू के एक उदाहरण पर performClick () कॉल करना होगा। उदाहरण के लिए, आप बस कॉल नहीं कर सकते

View.performClick();

इसके बजाय, कुछ ऐसा करें:

View myView = findViewById(R.id.myview);
myView.performClick();

2
लेकिन एंड्रॉयड के बैक बटन के लिए व्यू क्या है?
पीटर अज़ताई

4
आपके फ़ोन पर बैक बटन के लिए कोई "दृश्य" नहीं है। आपको उन बटन दबाने के लिए मुख्य श्रोताओं का उपयोग करने की आवश्यकता है। यह एक अलग मुद्दा है।
चांदनीशेख

3
@ मून - यदि आप चाहते हैं कि लोग आपकी टिप्पणियों को अधिसूचित करें, तो उन्हें "@" से शुरू करें और उपयोगकर्ता के पहले कुछ अक्षर जिन्हें आप अधिसूचित करना चाहते हैं .... (पोस्ट पर टिप्पणी करने वाले लेखक स्वचालित रूप से अधिसूचित हो जाते हैं, लेकिन टिप्पणीकार करते हैं नहीं)
पीटर अजताई

14
इस उत्तर में दिखाया गया कोड थोड़ा भ्रमित करने वाला है। बस स्पष्ट करने के लिए, दृश्य में एक स्थिर प्रदर्शन नहीं है () विधि। आपको व्यू के एक उदाहरण पर performClick () कॉल करना होगा।
Łकसज़ विक्लेंड्ट

3
यदि आप नहीं जानते कि आप क्या कर रहे हैं तो यह केवल भ्रामक है।
चांदनीशेख

52

बस स्पष्ट करने के लिए कि चांदनी ने क्या कहा: एंड्रॉइड में कोड के माध्यम से एक बटन क्लिक इवेंट को ट्रिगर करने के लिए निम्नलिखित प्रदान करें:

buttonName.performClick();


7

एंड्रॉइड callOnClick()( एपीआई 15 में जोड़ा गया ) कभी-कभी मेरे अनुभव से बेहतर विकल्प हो सकता है performClick()। यदि किसी उपयोगकर्ता की चयन ध्वनियां सक्षम हैं, तो performClick()उपयोगकर्ता को दो निरंतर चयन ध्वनियों को सुनने का कारण बन सकता है जो कुछ हद तक एक दूसरे के ऊपर स्तरित होते हैं जो कि परेशान हो सकते हैं। (उपयोगकर्ता के पहले बटन क्लिक के लिए एक चयन ध्वनि, और फिर दूसरे बटन के लिए एक और OnClickListenerजिसे आप कोड के माध्यम से बुला रहे हैं।)


7

कोड की इस सरल रेखा को लिखें: -

button.performClick();

जहां बटन बटन वर्ग का संदर्भ चर है और इस प्रकार परिभाषित किया गया है: -

private Button buttonToday ;
buttonToday = (Button) findViewById(R.id.buttonToday);

बस।


6

API15 के साथ शुरू करते हुए, आप यह भी उपयोग कर सकते हैं callOnClick()कि सीधे संलग्न दृश्य OnClickListener को कॉल करें। PerformClick () के विपरीत, यह केवल श्रोता को कॉल करता है, और किसी एक्सेसिबिलिटी इवेंट की रिपोर्ट करने जैसी किसी भी संबंधित क्लिकिंग क्रिया को नहीं करता है।


4

यदि आप का उपयोग नहीं करते हैं sender तर्क का हैं, तो बटन हैंडलर कार्यान्वयन को अलग-अलग फ़ंक्शन के लिए क्यों नहीं रीफ़्रैक्टर करें, और इसे जहां से चाहें (बटन हैंडलर से और दूसरी जगह से) कॉल करें।

वैसे भी, यह एक बेहतर और साफ-सुथरा डिज़ाइन है - एक ऐसा कोड जिसे बटन हैंडलर पर कॉल करने की आवश्यकता होती है और कुछ अन्य स्थानों से स्वयं के फ़ंक्शन के लिए फिर से तैयार किया जाना चाहिए। साथ ही यह आपको एप्लिकेशन लॉजिक कोड से UI हैंडलिंग को अलग करने में मदद करेगा। आपके पास फ़ंक्शन का एक अच्छा नाम होगा, न कि केवल onDateSelectedButtonClick ()।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.