आपको ऐसा कुछ करना चाहिए।
public interface OnViewSelected {
public void onViewSelected(int viewId);
}
और अपने onAttach
ऐसा करने में:
OnViewSelected _mClickListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
_mClickListener = (OnViewSelected) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement onViewSelected");
}
}
अपने टुकड़ा में OnClickListener
को लागू करने और अपने onClick()
विधि में ऐसा करते हैं:
पहले एक अंतरफलक जो उदाहरण के लिए आपकी गतिविधि से comunicate करने के लिए प्रयोग करेंगे बनाने
@Override
public void onClick(View v) {
_mClickListener.onViewSelected(456);
}
इसके बाद आपकी गतिविधि में आपको अपने फ्रैगमेंट में बनाए गए इंटरफ़ेस को कार्यान्वित करना होगा और यह आपको अनुपूरक तरीकों को जोड़ने के लिए कहें और आपकी गतिविधि में आप इस तरह काम करेंगे:
@Override
public void onViewSelected(int data) {
Log.d("","data : "+data); // this value will be 456.
}
यह सब कुछ है। :)
अच्छा :) एंड्रॉइड फ्रेमवर्क जैसा लगता है उतना उत्पन्न करता है। और अब मैं इसे स्पष्ट रूप से समझ सकता हूं – hqt
इंटरफ़ेस क्यों बनाना है? क्या आप सिर्फ एक संदर्भ सीटीएक्स (ग्लोबल) नहीं बना सकते हैं, और इसे सीटीएक्स = (आपकी एक्टिविटी) गतिविधि से बाहर की गतिविधि में डाला जा सकता है, और उसके बाद ctx.onViewSlected (डेटा) का उपयोग करें, जिसे आपने बनाया है, जिसे आपने अपनी गतिविधि में चुना है। – tony9099
क्योंकि मेरी राय में यह अब तक का सबसे अच्छा तरीका है, इससे कोई फर्क नहीं पड़ता कि मैं इसे 'फ्रैगमेंट' या बहुत से में उपयोग करता हूं। आपका कार्यान्वयन भी काम करेगा, लेकिन मुझे इंटरफ़ेस अधिक पसंद है :) – hardartcore