许多导航组件还可以



我的导航组件有问题。我想知道我的想法是否正确。

我有main_activityA_activityB_activityMainAB的父级。

每个活动(AB(应该拥有自己的NavHostFragment(AB都有许多片段,例如列表,详细信息等(

示例流:main-> A-> listA-> detailA

后退按钮可以正常工作。

问题:

如何在片段和A活动中实现导航(工具栏箭头(?

是否可以从第一个片段listA返回到主?

使用许多导航组件正确的解决方案(每个AB ...活动(?

在我的第一个片段中,我没有导航选项。如何启用?

活动代码:

private void setUp() {
    setSupportActionBar(mActivityTrainingBinding.toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
    }
    NavController navController = Navigation.findNavController(this, R.id.fragment_container);
    NavigationUI.setupActionBarWithNavController(this, navController);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home) {
        Navigation.findNavController(this, R.id.fragment_container).navigateUp();
        return true;
    }
    return true;
}
@Override
public boolean onSupportNavigateUp() {
    return Navigation.findNavController(this, R.id.fragment_container).navigateUp();
}

清单代码:

<activity
            android:name=".ui.training.TrainingActivity" />

导航代码:

<?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_graph_training"
    app:startDestination="@+id/trainingListFragment">
    <fragment
        android:id="@+id/trainingListFragment"
        android:name="pl.apps.ui.training.list.TrainingListFragment"
        android:label="TrainingListFragment">
        <action
            android:id="@+id/action_trainingListFragment_to_trainingDetailFragment"
            app:destination="@id/trainingDetailFragment" />
    </fragment>
    <fragment
        android:id="@+id/trainingDetailFragment"
        android:name="pl.apps.ui.training.detail.TrainingDetailFragment"
        android:label="TrainingDetailFragment" >
        <argument
            android:name="trainingId"
            app:argType="string" />
    </fragment>
</navigation>

是的,您的想法是正确的。每个活动都有自己的导航图和主机片段。

如何在片段和活动中导航(工具栏箭头(?

以标准方式 - 使用setupActionBarWithNavController和Activitiy中的onSupportNavigateUp()覆盖。不需要片段中的代码。

是否可以从第一个片段列表回到主?

是的,这是一种标准行为。如果Lista是第一个片段(顶级(,则按下后,您将切换到以前的活动。

相关内容

  • 没有找到相关文章

最新更新