Напевно, ви повинні спробувати від'єднати фрагмент від активності, якщо ви хочете використовувати його десь в іншому місці. Це можна зробити, створивши інтерфейс, який реалізує ваша діяльність.
Отже, ви б визначили інтерфейс, наприклад:
Припустимо, наприклад, що ви хотіли надати активності String і запропонувати їй повернути цілий ряд:
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 (Activity Activity).
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. */
}
}
}
редагувати (17.12.2015):onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
Перша відповідь, безумовно, працює, але вона поєднує ваш поточний фрагмент із активністю хоста. Його найкраща практика зберігати фрагмент, від'єднаний від активності хоста, якщо ви хочете використовувати його в іншій активності.