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.