Anda mungkin harus mencoba memisahkan fragmen dari aktivitas jika Anda ingin menggunakannya di tempat lain. Anda dapat melakukan ini dengan membuat antarmuka yang mengimplementasikan aktivitas Anda.
Jadi, Anda akan mendefinisikan antarmuka seperti berikut:
Misalkan misalnya Anda ingin memberikan sebuah String aktivitas dan minta mengembalikan Integer:
public interface MyStringListener{
public Integer computeSomething(String myString);
}
Ini dapat didefinisikan dalam fragmen atau file terpisah.
Maka Anda akan memiliki aktivitas Anda mengimplementasikan antarmuka.
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;
}
}
Kemudian dalam fragmen Anda, Anda akan memiliki variabel MyStringListener dan Anda akan mengatur pendengar dalam fragmen pada metode Attach (Aktivitas aktivitas).
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. */
}
}
}
sunting (17.12.2015):onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
Jawaban pertama pasti berhasil tetapi pasangan Anda fragmen saat ini dengan aktivitas host. Praktik yang baik untuk menjaga fragmen dipisahkan dari aktivitas host jika Anda ingin menggunakannya dalam kegiatan lain.