Back to questions
Junior — Middle
72
Можно ли инициализировать Fragment с параметрами через конструктор в Android?
Companies where asked
Магнит Тех
Answer from AI
sobes.tech AI
Инициализировать Fragment с параметрами через конструктор не рекомендуется и может привести к проблемам, так как Android может пересоздавать фрагменты, вызывая конструктор без параметров.
Правильный способ — использовать статический метод newInstance, в котором создаётся фрагмент и в Bundle передаются параметры через setArguments:
public class MyFragment extends Fragment {
private static final String ARG_PARAM = "param";
public static MyFragment newInstance(String param) {
MyFragment fragment = new MyFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM, param);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
String param = getArguments().getString(ARG_PARAM);
// использовать param
}
}
}
Так обеспечивается корректное восстановление состояния фрагмента системой Android.