Sobes.tech
Junior — Middle

Може ли да инициализирате Fragment с параметри чрез конструктор в Android?

sobes.tech AI

Отговор от AI

Не е препоръчително да инициализирате Fragment с параметри чрез конструктора, тъй като това може да доведе до проблеми, тъй като Android може да създаде отново фрагменти, като извика конструктора без параметри.

Правилният начин е да използвате статичния метод newInstance, в който се създава фрагментът и параметрите се предават чрез setArguments в Bundle:

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.