假设我在父母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,上面的一个正在使用你的answer但不是这个:
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);
根据Update UI components with NavigationUI documentation:
默认情况下,当用户位于导航图的顶级目标位置时,“导航”按钮将隐藏,并在任何其他目标位置显示为“向上”按钮。
因此,您可以通过传入一组空的顶级目标来使“向上”按钮显示在所有目的地上。当您无法在导航图中向上移动时,将调用您通过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()`