Вы можете сделать это, но будьте осторожны с:
- , используя
getView()
is Nullable ; поэтому вы должны убедиться, что ваш фрагмент уже создал представление.
Это можно решить двумя способами
Первое: Переопределение onViewCreated (), который имеет ненулевой аргумент представления
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
fragmentNavigation(view);
}
boolean b;
public void fragmentNavigation(View view) {
if (b) {
Navigation.findNavController(view).navigate(R.id.nav_gallery);
}
}
Секунда: Создайте поле просмотра в классе фрагмента и установите его в onCreateView()
View view;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.main_fragment, container, false);
return view;
}
затем всегда вызывайте fragmentNavigation(view);
в этом поле просмотра.
Ваш фрагмент размещен на NavHostFragment
навигационного графика; так что вы можете избежать потенциала IllegalStateException