我有两个活动A和B和三个片段C、D和E。
我使用intent从活动A移动到B,但没有完成活动A,因为我想稍后再回到它。
Activity B包含一个自定义布局和一个片段容器。
- 自定义布局包含一个文本视图和一个后退图标图像视图。此布局作为操作栏,因为我不使用默认的操作栏,因为活动B的主题是android:theme="@style/AppTheme.NoActionBar”。
- 片段容器承载导航图。
片段C是起始目的地,导航图允许按照C-〉D-〉E的顺序导航,并按照以下顺序返回堆栈。
C-〉D //在第一个返回堆栈之后
C //在第二个返回堆栈之后到达返回堆栈中最后一个元素
A //活动B完成,再按一次后退图标图像后,活动A继续
按下“返回”图标时,活动B xml中自定义布局的图像视图。
由于在任何片段(C、D、E)中没有其他操作栏,所以我只能使用活动B的后退图标图像视图。
我想知道如何实现此功能我的活动B xml如下所示
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--android:id="@+id/container"-->
<include layout="@layout/custom_tool_bar"
android:id="@+id/toolbar_settings_activity"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_dashboard_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/settings_navigation"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar_settings_activity"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
下面给出了自定义工具栏的xml代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/app_gradient_color_background">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_back"
android:layout_width="20dp"
android:layout_height="26dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_marginEnd="1dp"
android:contentDescription="@string/content_description"
android:scaleType="fitXY"
android:src="@drawable/ic_white_color_back_24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
/>
<LinearLayout
android:id="@+id/customlayout_width"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
app:layout_constraintStart_toEndOf="@+id/iv_back"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingEnd="10dp"
android:paddingTop="6dp"
android:paddingStart="10dp"
android:text="@string/custom_tool_bar_Name"
android:textColor="@color/colorOffWhite"
android:textSize="26sp"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
custom layout used as action bar
Activity B when navgraph start destination is set to C fragment
Navgraph to navigate from fragment C->D->E in Activity B
1条答案
按热度按时间ddhy6vgd1#
1-首先,在活动B中获取navController:
2-然后,您可以将单击侦听器添加到后退按钮: