Jetpack Navigation 工具栏中的后退按钮不起作用(对于第一个目的地)
BackButton in the Toolbar with Jetpack Navigation is not working (for the first destination)
在 activity XML 中,我有这样的片段标签,
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
style="@style/VectorToolbarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<fragment
android:id="@+id/chat_nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
</androidx.constraintlayout.widget.ConstraintLayout>
在activity代码中,
navController = findNavController(R.id.chat_nav_host_fragment)
navController.setGraph(R.navigation.one_to_one_chat_nav)
appBarConfiguration = AppBarConfiguration.Builder().build()
toolbar.setupWithNavController(navController, appBarConfiguration!!)
通过这样做,我可以看到带有工具栏的后退按钮。但是,后退按钮不起作用或应用程序不转到上一个 activity。如果我导航到下一个片段,后退按钮会工作并将我带到上一个片段。它只在第一个片段中不起作用。
任何帮助或建议都将非常有用。谢谢
我以前是这样放后退按钮的,也许对你有用...:[=13=]
在activity中:
//
// Back button in Action Bar
//
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
然后在onCreate方法中:
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle("Your title here");
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
当然,工具栏必须在xml文件中定义:
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark" />
希望能帮到你
我找到了解决办法。这可能不是最好的答案。但是,它现在有效。
toolbar.setNavigationOnClickListener {
if(navController.graph.startDestination == navController.currentDestination?.id) {
finish()
} else {
navController.navigateUp()
}
}
在 activity XML 中,我有这样的片段标签,
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
style="@style/VectorToolbarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent" />
<fragment
android:id="@+id/chat_nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
</androidx.constraintlayout.widget.ConstraintLayout>
在activity代码中,
navController = findNavController(R.id.chat_nav_host_fragment)
navController.setGraph(R.navigation.one_to_one_chat_nav)
appBarConfiguration = AppBarConfiguration.Builder().build()
toolbar.setupWithNavController(navController, appBarConfiguration!!)
通过这样做,我可以看到带有工具栏的后退按钮。但是,后退按钮不起作用或应用程序不转到上一个 activity。如果我导航到下一个片段,后退按钮会工作并将我带到上一个片段。它只在第一个片段中不起作用。
任何帮助或建议都将非常有用。谢谢
我以前是这样放后退按钮的,也许对你有用...:[=13=]
在activity中:
//
// Back button in Action Bar
//
@Override
public boolean onSupportNavigateUp(){
finish();
return true;
}
然后在onCreate方法中:
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle("Your title here");
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
当然,工具栏必须在xml文件中定义:
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:popupTheme="@style/ThemeOverlay.MaterialComponents.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark" />
希望能帮到你
我找到了解决办法。这可能不是最好的答案。但是,它现在有效。
toolbar.setNavigationOnClickListener {
if(navController.graph.startDestination == navController.currentDestination?.id) {
finish()
} else {
navController.navigateUp()
}
}