Я использую компонент навигации Jetpack с очень простой настройкой, одним действием (MainActivity) и 4 фрагментами
MainFragment,
CardPreviewFragment,
createCardFragment,
и AddPredictionChipsFragment,
Компонент NavigationUI настраивает мой контроллер навигации с моей панелью инструментов, у меня есть действия, установленные для каждого пункта назначения, и popTo, также установленные для каждого.Я могу успешно перейти к каждому из этих фрагментов, и название панели инструментов изменяется правильно, а значок «Домой» правильно отображает стрелку назад, но нажатие стрелки для использования действия popTo ничего не дает (SIDENOTE, если я установил анимацию поп-ввода и выхода и использовал кнопку «Назад»для возврата используется анимация).Любые идеи приветствуются, ниже приведен соответствующий код, отредактированный для краткости
ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
setNavigation();
}
private void setNavigation() {
navController = Navigation.findNavController(this, R.id.main_fragment);
NavigationUI.setupActionBarWithNavController(this, navController);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent i;
switch (item.getItemId()){
case R.id.preferences :
//code
return true;
case R.id.share :
//code
case R.id.create :
//code
case R.id.about :
//code
return true;
}
return super.onOptionsItemSelected(item);
}
В моем основном действии используется панель действий, показывающая панель поиска и некоторыепункты меню, я не знаю, влияет ли это как-то на это (пытался удалить их без изменений)
Содержимое main содержит фрагмент навигационного хоста
<fragment
android:id="@+id/main_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="androidx.navigation.fragment.NavHostFragment"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_main"/>
Фрагменты используют androidx:EditFragment расширяет Fragment и не использует опции меню или что-либо подобное, все они являются просто стандартными фрагментами, вот мой график навигации
<?xml version="1.0" encoding="utf-8"?>
<navigation
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:id="@+id/nav_main"
app:startDestination="@id/mainFragment">
<fragment
android:id="@+id/mainFragment"
android:name="com.sealstudios.simpleaac.ui.MainFragment"
android:label="Simple AAC"
tools:layout="@layout/fragment_main">
<action
android:id="@+id/action_mainFragment_to_cardPreviewFragment"
app:destination="@id/cardPreviewFragment"
app:popUpTo="@+id/mainFragment"
app:popUpToInclusive="false"/>
<action
android:id="@+id/action_mainFragment_to_createCardFragment"
app:destination="@id/createCardFragment"
app:popUpTo="@+id/mainFragment"
app:popUpToInclusive="false"/>
</fragment>
<fragment
android:id="@+id/cardPreviewFragment"
android:name="com.sealstudios.simpleaac.ui.CardPreviewFragment"
android:label="Preview Card"
tools:layout="@layout/preview_card_fragment">
<action
android:id="@+id/action_cardPreviewFragment_to_createCardFragment"
app:destination="@id/createCardFragment"
app:popUpTo="@+id/mainFragment"
app:popUpToInclusive="false"/>
</fragment>
<fragment
android:id="@+id/addPredictionChipsFragment"
android:name="com.sealstudios.simpleaac.ui.AddPredictionChipsFragment"
android:label="Add Predictions"
tools:layout="@layout/add_prediction_chips_fragment_layout"/>
<fragment
android:id="@+id/createCardFragment"
android:name="com.sealstudios.simpleaac.ui.CreateCardFragment"
android:label="Create / Edit"
tools:layout="@layout/fragment_create_card">
<action
android:id="@+id/action_createCardFragment_to_addPredictionChipsFragment"
app:destination="@id/addPredictionChipsFragment"
app:popUpTo="@+id/createCardFragment"
app:popUpToInclusive="false"/>
</fragment>
</navigation>
и вот пример того, как я вызываю одно из действий,
Navigation.findNavController(requireActivity(),R.id.main_fragment)
.navigate(R.id.action_mainFragment_to_cardPreviewFragment);
это действие перемещается в правильное место, получая правильный заголовок с метки, но не позволяет мне перемещаться назад / вверх с помощью стрелки, полный проект здесь
ОБНОВЛЕНИЕ Это воспроизводимо
Я могу создать новый проект, добавить компонент навигации и 2 фрагмента, добавить график навигации и добавить navhost к основному содержимому, ия в конечном итоге с тем же поведением (стрелка появляется, но ничего не всплывает, включая сам график) я использую "androidx.navigation: фрагмент-навигации: 2.1.0-alpha03" и "androidx.navigation: navigation-ui: 2.1.0-alpha03 ", и я сделал пример проекта здесь и поднял ошибку в трекере проблем
UPDATE Google вернулись ко мне и сказали, что этоожидаемое поведение, хотя я вполне уверен, что он не понял и определенно не выполнил приведенный мною пример