कहें कि मैं अपनी कक्षा के लिए अपना खुद का कार्यक्रम श्रोता बनाना चाहता हूं, मैं यह कैसे कर सकता हूं? क्या मुझे मैन्युअल रूप से धागे को बनाए रखने की ज़रूरत है?एंड्रॉइड कस्टम इवेंट श्रोता
उत्तर
public class CustomView extends View(){
OnCustomEventListener mListener;
:
://some code
:
:
एक अंतरफलक है कि आपके गतिविधि के द्वारा लागू किया जाएगा बनाएँ:
public interface OnCustomEventListener {
void onEvent();
}
public void setCustomEventListener(OnCustomEventListener eventListener) {
mListener = eventListener;
}
अब आप को पता है जब घटना वास्तव में हो रहा है की जरूरत है। उदाहरण है जब उपयोगकर्ता स्क्रीन पर एक बिंदु को छू लेती है, तो ओवरराइड onTouchEvent विधि:
onTouchEvent(MotionEvent ev) {
if (ev.getAction==MotionEvent.ACTION_DOWN) {
if(mListener!=null)
mListener.onEvent();
}
}
इसी तरह, आप एक विशिष्ट घटना है कि आप चाहते हैं बना सकते हैं। (उदाहरण स्पर्श हो सकते हैं, बिल्कुल 2 सेकंड तक प्रतीक्षा करें और रिलीज करें- आपको टच इवेंट के अंदर कुछ तर्क करने की आवश्यकता होगी)।
अपनी गतिविधि में, आप इस तरह के रूप में एक eventListener स्थापित करने के लिए customView वस्तु का उपयोग कर सकते हैं:
customView.setCustomEventListener(new OnCustomEventListener() {
public void onEvent() {
//do whatever you want to do when the event is performed.
}
});
OnCustomEventListener इंटरफ़ेस परिभाषा पर कोष्ठकों लिखने में कोई त्रुटि हो जाए? –
ओह! हाँ यह एक टाइपो है, इसे सही किया गया है। धन्यवाद – rDroid
rDroid, उदाहरण के लिए धन्यवाद! क्या कस्टम क्लाइंट क्लास के अंदर या बाहर OnCustomEventListener इंटरफ़ेस घोषित किया जाना चाहिए? – Brabbeldas
यह निम्नलिखित तरीके
पहले एक अंतरफलक वर्ग बनाने में किया जा सकता:
public interface OnStopTrackEventListener {
public void onStopTrack();
}
फिर इंटरफ़ेस को नियंत्रित करने वाली कक्षा बनाएं:
public class Player {
private OnStopTrackEventListener mOnStopTrackEventListener;
public void setOnStopTrackEventListener(OnStopTrackEventListener eventListener)
{
mOnStopTrackEventListener = eventListener;
}
public void stop()
{
if(mOnStopTrackEventListener != null)
{
mOnStopTrackEventListener.onStopTrack();
}
}
}
यह सब कुछ है। इसे अब
Player player = new Player();
player.stop(); //We are stopping music
player.setOnStopTrackEventListener(new OnStopTrackEventListener() {
@Override
public void onStopTrack() {
//Code to work when music stops
}
});
सुंदर कोड। – Dskato
का उपयोग CodePath विषय देखें [कस्टम श्रोता बनाना] (https://guides.codepath.com/android/Creating-Custom-Listeners) – Suragch