Как отобразить кнопку «Вверх» в другом действии, используя компонент архитектуры навигации - PullRequest
0 голосов
/ 21 февраля 2019

Скажите, что я нахожусь на родителе ActivityA, у которого есть кнопка Fab.При нажатии на кнопку Fab открывается, ActivityB.

ActivityB содержит график навигации.Итак, я настроил компонент навигации, например:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null)
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph())
        .build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

Теперь проблема в том, что я не могу отобразить кнопку вверх, чтобы перейти к родительской активности.На AndroidManifext.xml, код:

<activity
    android:name=".ui.ActivityB"
    android:label="Activity B"
    android:launchMode="singleTop"
    android:parentActivityName=".ui.ActivityA">
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.ui.ActivityA" />
</activity>

Итак, мой вопрос, как отобразить кнопку вверх?


@ ianhanniballake, выше работает с вашим ответ но не это:

Toolbar toolbar = findViewById(R.id.toolbar);

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder()
        .build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);

Или:

NavigationUI.setupWithNavController(toolbar, navController);

1 Ответ

0 голосов
/ 21 февраля 2019

Согласно Обновление компонентов пользовательского интерфейса с помощью документации NavigationUI :

По умолчанию кнопка навигации скрыта, когда пользователь находится в пункте назначения верхнего уровня графика навигации.и появляется как кнопка «Вверх» в любом другом пункте назначения.

Поэтому вы можете получить кнопку «Вверх» для отображения на всех адресатах, передав пустой набор пунктов назначения верхнего уровня.Если вы не можете перейти вверх по навигационной диаграмме, будет вызван OnNavigationUpListener, который вы установили с помощью setFallbackOnNavigateUpListener, что позволит вам активировать функцию перехода вверх по активности:

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder()
    .setFallbackOnNavigateUpListener(new AppBarConfiguration.OnNavigateUpListener() {
        @Override
        public boolean onNavigateUp() {
            // Trigger the Activity's navigate up functionality
            return super.onSupportNavigateUp();
        }
    }).build();
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

 // Make sure to call NavigationUI.navigateUp(navController, appBarConfiguration);
 // in your Activity's `onSupportNavigateUp()`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...