2013-01-08 13 views
12

मैं Stringfragment से activity पर डेटा भेजना चाहता हूं।पर खंड से गतिविधि के लिए कॉलबैक

मैंने onAttach कॉलबैक का उपयोग करके एंड्रॉइड डेवलपर में खंड और गतिविधि के बीच संचार के बारे में आलेख पढ़ा है।

कोई भी स्पष्ट रूप से व्याख्या कर सकता है कि खंड से गतिविधि को डेटा कैसे भेजना है?

उत्तर

29

आपको ऐसा कुछ करना चाहिए।

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. 
} 

यह सब कुछ है। :)

+2

अच्छा :) एंड्रॉइड फ्रेमवर्क जैसा लगता है उतना उत्पन्न करता है। और अब मैं इसे स्पष्ट रूप से समझ सकता हूं – hqt

+0

इंटरफ़ेस क्यों बनाना है? क्या आप सिर्फ एक संदर्भ सीटीएक्स (ग्लोबल) नहीं बना सकते हैं, और इसे सीटीएक्स = (आपकी एक्टिविटी) गतिविधि से बाहर की गतिविधि में डाला जा सकता है, और उसके बाद ctx.onViewSlected (डेटा) का उपयोग करें, जिसे आपने बनाया है, जिसे आपने अपनी गतिविधि में चुना है। – tony9099

+0

क्योंकि मेरी राय में यह अब तक का सबसे अच्छा तरीका है, इससे कोई फर्क नहीं पड़ता कि मैं इसे 'फ्रैगमेंट' या बहुत से में उपयोग करता हूं। आपका कार्यान्वयन भी काम करेगा, लेकिन मुझे इंटरफ़ेस अधिक पसंद है :) – hardartcore

संबंधित मुद्दे