Я использую компоненты навигации Jetpack в своем приложении, теперь все работает нормально, у меня есть странный сценарий, когда мне нужно перейти от фрагмента-B к фрагменту-A (фрагмент хоста). но когда я запускаю свое приложение, он выдает ошибку. вот так в моем LogCat
я хочу вернуться от ChildFragment к ParenHostFragment.
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.sigitechnologies.kayakclone, PID: 10266
java.lang.IllegalStateException: View androidx.drawerlayout.widget.DrawerLayout{4f7ac98 VFE...... ......ID 0,0-0,0 #7f080138 app:id/profileDrawer} does not have a NavController set
at androidx.navigation.Navigation.findNavController(Navigation.java:84)
at com.sigitechnologies.kayakclone.Fragments.AccountInfo.ProfileFragment.createViewsHere(ProfileFragment.java:60)
at com.sigitechnologies.kayakclone.Fragments.AccountInfo.ProfileFragment.onCreateView(ProfileFragment.java:48)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2698)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:320)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187)
at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1997)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Как я могу это сделать? i
картинка, демонстрирующая, что я хочу делать.
Нажмите, чтобы увидеть изображение
Это мой код для навигационного контроллера и элементов navigationItemSelected.
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.search_flights_hotels:
controller.navigate(R.id.action_profileFragment_to_homeFragment);
break;
}
return true;
}
, а это я объявляю NavigationController
controller = Navigation.findNavController(view);