Вероятно, вам следует попытаться отделить фрагмент от действия, если вы хотите использовать его где-то еще. Вы можете сделать это, создав интерфейс, который реализует ваша деятельность.
Таким образом, вы бы определили интерфейс следующим образом:
Предположим, например, что вы хотите присвоить активности строку и вернуть целое число:
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
Первый ответ определенно работает, но он связывает ваш текущий фрагмент с активностью хоста. Рекомендуется не связывать фрагмент с активностью хоста, если вы хотите использовать его с другой активностью.