Sobes.tech
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.