दिलचस्प पोस्ट
NSUserDefaults सिंक्रनाइज़-विधि जीएसओएन का उपयोग करते हुए JSON फाइल पार्स करें एक सॉकेट सर्वर के रूप में कार्य करने के लिए यूनिटी 3 डी सी # प्लगइन आराम सामग्री प्रकार: क्या यह एक्सटेंशन पर आधारित या हेडर स्वीकार करना चाहिए? एक 64-बिट सिस्टम (जीएनयू टूलचैन) पर 32-बिट बायनेरिज़ को इकट्ठा करना एनएसपीडेट: एनएसडीटे की संपत्ति के दिन वस्तुओं को छानने के लिए सी # में एक अस्थायी और अपरिवर्तनीय स्ट्रिंग के बीच क्या अंतर है? बूट लिपिक में col-lg- *, col-md- * और col-sm- * में अंतर क्या है? 128 क्यों करता है == 128 झूठी वापसी करता है लेकिन 127 == 127 पूर्णांक पूर्णांक के आवरण में परिवर्तित करते समय क्या होता है? PHP में कॉल करने वाले पायथन HTML में आईडी और नाम विशेषताओं के बीच का अंतर SO_REUSEADDR (setockopt विकल्प) का अर्थ क्या है – लिनक्स? क्यों pthread_cond_wait नकली जाली है? jQuery और प्रोटोटाइप संघर्ष Foreach में संदर्भ द्वारा PHP पास

Android में हमारे अपने श्रोता इंटरफ़ेस कैसे बनायें?

क्या कोई मुझे कुछ कोड स्निपेट के साथ उपयोगकर्ता परिभाषित श्रोता इंटरफ़ेस बनाने में मदद करता है?

वेब के समाधान से एकत्रित समाधान "Android में हमारे अपने श्रोता इंटरफ़ेस कैसे बनायें?"

public interface MyListener { // you can define any parameter as per your requirement public void callback(View view, String result); } public class MyActivity extends Activity implements MyListener { @override public void onCreate(){ MyButton m = new MyButton(this); } // method invoke when mybutton will click @override public void callback(View view, String result) { // do your stuff here } } public class MyButton { MyListener ml; // constructor MyButton(MyListener ml) { this.ml = ml; } public void MyLogicToIntimateOthere() { ml.callback(this, "success"); } } 

कृपया पर्यवेक्षक पैटर्न को पढ़िए

श्रोता अंतरफलक

 public interface OnEventListener { void onEvent(EventResult er); // or void onEvent(); as per your need } 

तो अपने वर्ग में Event क्लास कहें

 public class Event { private OnEventListener mOnEventListener; public void setOnEventListener(OnEventListener listener) { mOnEventListener = listener; } public void doEvent() { /* * code code code */ // and in the end if (mOnEventListener != null) mOnEventListener.onEvent(eventResult); // event result object :) } } 

अपने चालक वर्ग MyTestDriver

 public class MyTestDriver { public static void main(String[] args) { Event e = new Event(); e.setOnEventListener(new OnEventListener() { public void onEvent(EventResult er) { // do your work. } }); e.doEvent(); } } 

मैंने एक जेनेरिक एसिंकटैस श्रोता बनाया है जो एस्के टास्क से अलग वर्ग से परिणाम प्राप्त करता है और इसे इंटरफ़ेस कॉलबैक का उपयोग कर कॉलिंग एक्टिविटी दे सकता है।

 new GenericAsyncTask(context,new AsyncTaskCompleteListener() { public void onTaskComplete(String response) { // do your work. } }).execute(); 

इंटरफेस

 interface AsyncTaskCompleteListener<T> { public void onTaskComplete(T result); } 

GenericAsyncTask

 class GenericAsyncTask extends AsyncTask<String, Void, String> { private AsyncTaskCompleteListener<String> callback; public A(Context context, AsyncTaskCompleteListener<String> cb) { this.context = context; this.callback = cb; } protected void onPostExecute(String result) { finalResult = result; callback.onTaskComplete(result); } } 

इस पर एक नज़र डालें, और अधिक जानकारी के लिए यह प्रश्न

श्रोता इंटरफ़ेस बनाएं

 public interface YourCustomListener { public void onCustomClick(View view); // pass view as argument or whatever you want. } 

और किसी अन्य गतिविधि (या टुकड़े) में विधि सेटऑनकस्टमक्लिक करें, जहां आप अपने कस्टम श्रोता को लागू करना चाहते हैं ……

  public void setCustomClickListener(YourCustomListener yourCustomListener) { this.yourCustomListener= yourCustomListener; } 

इस पद्धति को अपनी पहली गतिविधि से कॉल करें और श्रोता इंटरफ़ेस पास करें …

एंड्रॉइड में, आप एक इंटरफ़ेस बना सकते हैं जैसे श्रोता, और आपकी गतिविधि इसका क्रियान्वयन करती है, लेकिन मुझे नहीं लगता कि यह एक अच्छा विचार है। अगर हमारे पास अपने राज्य के परिवर्तन सुनने के लिए कई घटक हैं, तो हम एक बेसलिस्टर उपकरण इंटरफ़ेस श्रोता बना सकते हैं, और उन्हें संभालने के लिए टाइप कोड का उपयोग कर सकते हैं। हम विधि बना सकते हैं जब हम XML फ़ाइल बनाते हैं, उदाहरण के लिए:

 <Button android:id="@+id/button4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button4" android:onClick="Btn4OnClick" /> 

और स्रोत कोड:

  public void Btn4OnClick(View view) { String strTmp = "点击Button04"; tv.setText(strTmp); } 

लेकिन मुझे नहीं लगता कि यह एक अच्छा विचार है …

4 कदम हैं:

1.create इंटरफ़ेस वर्ग (श्रोता)

2. दृश्य इंटरफ़ेस में देखें 1 (चर को परिभाषित करें)

3. देखने के लिए इंटरफ़ेस का अंतर 2 (दृश्य 1 को 2 में देखा गया है)

देखने के लिए 1 में 4.पास इंटरफेस 2

उदाहरण:

चरण 1: आपको इंटरफ़ेस और definde फ़ंक्शन की आवश्यकता होती है

 public interface onAddTextViewCustomListener { void onAddText(String text); } 

चरण 2: दृश्य में इस इंटरफेस का उपयोग करें

 public class CTextView extends TextView { onAddTextViewCustomListener onAddTextViewCustomListener; //listener custom public CTextView(Context context, onAddTextViewCustomListener onAddTextViewCustomListener) { super(context); this.onAddTextViewCustomListener = onAddTextViewCustomListener; init(context, null); } public CTextView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(context, attrs); } public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context, attrs); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(context, attrs); } public void init(Context context, @Nullable AttributeSet attrs) { if (isInEditMode()) return; //call listener onAddTextViewCustomListener.onAddText("this TextView added"); } } 

चरण 3,4: गतिविधि को लागू करता है

 public class MainActivity extends AppCompatActivity implements onAddTextViewCustomListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //get main view from layout RelativeLayout mainView = (RelativeLayout)findViewById(R.id.mainView); //create new CTextView and set listener CTextView cTextView = new CTextView(getApplicationContext(), this); //add cTextView to mainView mainView.addView(cTextView); } @Override public void onAddText(String text) { Log.i("Message ", text); } } 

इस दृष्टिकोण को करने के लिए सरल तरीका सबसे पहले आपकी गतिविधि कक्षा में OnClickListeners लागू करता है।

कोड:

 class MainActivity extends Activity implements OnClickListeners{ protected void OnCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.activity_main.xml); Button b1=(Button)findViewById(R.id.sipsi); Button b2=(Button)findViewById(R.id.pipsi); b1.SetOnClickListener(this); b2.SetOnClickListener(this); } public void OnClick(View V) { int i=v.getId(); switch(i) { case R.id.sipsi: { //you can do anything from this button break; } case R.id.pipsi: { //you can do anything from this button break; } } }