У меня проблемы с поиском решения. С текущей парадигмой навигации, использующей Jetpack, большинство предложений, которые я нашел, не сработало. Большинство решений должны предоставить место для их переходов. С NavigationDrawer будет несколько вариантов для пунктов назначения. Решение, которое я нашел, избавило меня от навигационной парадигмы Jetpack.
Я смотрел на кодовые метки:
https://codelabs.developers.google.com/codelabs/android-navigation/#5
Попытка создания элемента навигации Выбранный прослушиватель, но никогда не вызывается:
Android Компонент навигации с переходом от Layerlayout
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(menuItem -> {
@IdRes
int id = menuItem.getItemId();
NavOptions.Builder optionsBuilder = new NavOptions.Builder();
optionsBuilder
.setEnterAnim(R.anim.slide_in_right)
.setExitAnim(R.anim.slide_out_left)
.setPopEnterAnim(R.anim.slide_in_left)
.setPopExitAnim(R.anim.slide_out_right);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
navController.navigate(id, null, optionsBuilder.build());
Попытка добавления тега действия в тег фрагмента в xml:
https://developer.android.com/guide/navigation/navigation-animate-transitions
<fragment
android:id="@+id/specifyAmountFragment"
android:name="com.example.buybuddy.buybuddy.SpecifyAmountFragment"
android:label="fragment_specify_amount"
tools:layout="@layout/fragment_specify_amount">
<action
android:id="@+id/confirmationAction"
app:destination="@id/confirmationFragment"
app:enterAnim="@anim/slide_in_right"
app:exitAnim="@anim/slide_out_left"
app:popEnterAnim="@anim/slide_in_left"
app:popExitAnim="@anim/slide_out_right" />
</fragment>
Но, как видите, для этого решения требуется пункт назначения. Мой NavigationDrawer содержит около 10 фрагментов, которые могут быть пунктами назначения.
Не удается найти решение, которое работает.