#android-fragments
Вопрос:
У меня есть домашний фрагмент. Если пользователь не ответил на вопрос о конфиденциальности, он должен быть перенаправлен на фрагмент конфиденциальности. После этого пользователь перенаправляется в настройки (другой фрагмент), а затем перенаправляется на домашний фрагмент. Проблема в том, что фрагменты иногда не отображаются, но иногда это работает.
dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.1' implementation 'androidx.navigation:navigation-fragment:2.3.5' implementation 'androidx.navigation:navigation-ui:2.3.5' implementation 'androidx.annotation:annotation:1.2.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' def fragment_version = "1.3.6" implementation "androidx.fragment:fragment:$fragment_version" implementation 'jp.co.cyberagent.android:gpuimage:2.0.4' implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'com.android.volley:volley:1.2.1' implementation 'androidx.core:core:1.6.0' def paging_version = "3.0.1" implementation "androidx.paging:paging-runtime:$paging_version" implementation "androidx.paging:paging-guava:$paging_version" implementation "androidx.lifecycle:lifecycle-viewmodel:2.3.1" implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" implementation 'com.google.android.gms:play-services-ads:20.4.0' implementation 'com.google.android.ads.consent:consent-library:1.0.8' implementation 'com.android.billingclient:billing:4.0.0' implementation 'androidx.room:room-runtime:2.3.0' annotationProcessor 'androidx.room:room-compiler:2.3.0' testImplementation 'androidx.room:room-testing:2.3.0' testImplementation 'junit:junit:4.13.1' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation 'androidx.documentfile:documentfile:1.0.1' } apply plugin: "androidx.navigation.safeargs"
Я перемещаюсь, используя следующее внутри домашнего фрагмента:
TigerDb.getDb(getContext()).otherDao().getOthers().observe(getViewLifecycleOwner(), others -> { /*here the logic that decides whether to redirect or not and redirecting using following*/ HomeFragmentDirections.ActionNavHomeToNavPrivacy action = HomeFragmentDirections.actionNavHomeToNavPrivacy(); action.setAppStart(true); Navigation.findNavController(view).navigate(action); return; HomeFragmentDirections.ActionNavHomeToNavOther action = HomeFragmentDirections.actionNavHomeToNavOther(); action.setNavNextHome(true); Navigation.findNavController(view).navigate(action); NavDirections action = HomeFragmentDirections.actionNavHomeToNavHistory(); NavHostFragment navHostFragment = (NavHostFragment) getActivity().getSupportFragmentManager() .findFragmentById(R.id.nav_host_fragment); NavController navController = navHostFragment.getNavController(); navController.navigate(action);
content_main.xml:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/app_bar_main"> <androidx.fragment.app.FragmentContainerView android:id="@ id/nav_host_fragment" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="match_parent" android:layout_height="match_parent" app:defaultNavHost="true" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:navGraph="@navigation/mobile_navigation" /> </androidx.constraintlayout.widget.ConstraintLayout>
Заранее спасибо