यदि आप इसे कहीं और उपयोग करना चाहते हैं, तो आपको संभवतः गतिविधि से टुकड़े को हटाने का प्रयास करना चाहिए। आप ऐसा इंटरफ़ेस बनाकर कर सकते हैं जिसे आपकी गतिविधि लागू करती है।
तो आप निम्नलिखित की तरह एक इंटरफ़ेस परिभाषित करेंगे:
उदाहरण के लिए मान लीजिए कि आप गतिविधि को एक स्ट्रिंग देना चाहते हैं और क्या यह एक पूर्णांक लौटाता है:
public interface MyStringListener{
public Integer computeSomething(String myString);
}
इसे खंड या एक अलग फ़ाइल में परिभाषित किया जा सकता है।
फिर आप अपनी गतिविधि को इंटरफ़ेस लागू करेंगे।
public class MyActivity extends FragmentActivity implements MyStringListener{
@Override
public Integer computeSomething(String myString){
/** Do something with the string and return your Integer instead of 0 **/
return 0;
}
}
तब आपके टुकड़े में आपके पास एक MyStringListener चर होगा और आप श्रोता को onAttach (गतिविधि गतिविधि) विधि में सेट करेंगे।
public class MyFragment {
private MyStringListener listener;
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
listener = (MyStringListener) context;
} catch (ClassCastException castException) {
/** The activity does not implement the listener. */
}
}
}
संपादित करें (2015/12/17):onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
पहला उत्तर निश्चित रूप से काम करता है लेकिन यह मेजबान गतिविधि के साथ आपके वर्तमान टुकड़े को जोड़ेगा। यदि आप इसे एक और संवेदनशीलता में उपयोग करना चाहते हैं तो टुकड़ा को मेजबान गतिविधि से अलग रखने के लिए इसका अच्छा अभ्यास है।