getActivity()
и getContext()
оба вернут ноль, если ваш фрагмент не привязан к деятельности / контексту. Если они возвращают значение NULL, я не буду предлагать использовать какое-либо ранее сохраненное значение, так как сохраненный контекст может быть отсоединен и может привести к утечкам памяти.
Как правило, вы получаете контекст после прикрепления фрагмента. Вы можете сохранить контекст в обратном вызове onAttach(Context)
.
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.context = context;
}
Тем не менее, обязательно устанавливайте его на ноль, когда фрагмент отсоединяется, чтобы избежать утечек памяти.
@Override
public void onDetach() {
this.activity = null;
super.onDetach();
}
Нет никаких минусов сохранения контекста в переменной, о которой я могу думать, за исключением того, что вы должны быть осторожны с изменениями состояния фрагмента. Об этом позаботится onDetach()
.