首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Android中的导航控制器自定义返回按钮以返回到某个目的地?

在Android中使用导航控制器自定义返回按钮以返回到某个目的地,可以通过以下步骤完成:

  1. 首先,在你的布局文件中,将Toolbar或ActionBar添加到顶部,并设置其作为ActionBar:
代码语言:txt
复制
<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
  1. 在你的Activity中,获取导航控制器并设置导航图标为自定义图标。在onCreate方法中添加以下代码:
代码语言:txt
复制
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration);
  1. 创建一个自定义的返回按钮图标,例如一个左箭头的图标。将图标文件(例如back_icon.xml)放置在res/drawable文件夹下,并定义如下内容:
代码语言:txt
复制
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
    <path
        android:fillColor="#FFFFFF"
        android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8l8,8l1.41,-1.41L7.83,13H20v-2z" />
</vector>
  1. 在Activity的onSupportNavigateUp方法中,处理导航返回操作:
代码语言:txt
复制
@Override
public boolean onSupportNavigateUp() {
    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    return navController.navigateUp() || super.onSupportNavigateUp();
}
  1. 最后,为Toolbar添加导航按钮,并将其设置为自定义的返回按钮图标:
代码语言:txt
复制
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.back_icon);

通过以上步骤,你就可以在Android中使用导航控制器自定义返回按钮以返回到指定目的地了。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Navigation用法

纯代码方式使用起来不是特别友好,并且Fragment和App bar在管理和使用过程显得很混乱。   ...GraphFragment正是通过NavHostFragment进行展示   NavController:导航控制器,用于在代码完成Navigation Graph具体页面切换动作   它们三者之间关系可以通过下面的这段话来理解...5.使用NavController完成导航       经过以上步骤后,我们还需要通过NavController对象,在代码完成具体页面跳转工作,我们需要在MainFragment布局文件添加一个...App bar各种按钮和菜单,同样承担着页面切换工作。例如,当ActionBar左边返回按钮被单击时,我们需要响应该事件,返回到上一个页面。...而在SecondFragmentActionBar左侧有一个返回按钮,通过该按钮,可以返回MainFragment。

27820
  • 使用导航组件: 对话框目的地 | MAD Skills

    概览 在本系列 上一篇文章 ,我大致介绍了导航组件以及如何使用导航图。 在这篇文章,我会介绍如何使用 API 来导航到对话框目的地 (dialog destination)。...在该文件,创建一个继承自 BottomSheetDialogFragment 子类 MyDialog,并且重写 onCreateView() 返回一个加载自我们刚刚创建布局视图。...让我们回到导航图并新增一个目的地。在弹出菜单,您应该可以发现系统已经识别出 MyDialog,选中它。 ?...点击任一甜甜圈会导航到编辑其信息对话框 点击 DONE 按钮,将保存更改到数据库并且返回更新列表;而点击 CANCEL 按钮,将放弃掉所有的编辑并返回。...注意: 点击返回按钮,同样会返回甜甜圈列表,因为导航组件已经自动为我们设置好了返回栈。 总结 通过这篇文章我们了解了如何使用内置导航组件快速地创建一个新应用,并且学习了如何导航到对话框目的地

    1.4K30

    导航组件概览 | MAD Skills

    您还需要在用户点击设备返回按钮和 ActionBar 向上按钮时正确地处理返回和向上操作。有时候不同应用处理这两个相关而又不完全相同操作会产生一些不一致结果。...您可以运行应用并点击相关按钮 (或者返回按钮,该按钮会被自动插入导航返回事件) 来观察结果: ? 运行应用并使用 Next/Previous 按钮返回按钮导航 导航 UI 层次结构 ?...我发现,观察 UI 各个部分在包含层级相互关系对于理解它们如何一起工作十分有帮助。为了查看这个部分,让我们来使用 Navigation Drawer Activity 模板创建另一个新工程。...导航部件 我们已经在层级结构查看了几个 UI 组件,以及它们彼此之间是如何关联,接下来我想介绍一下几个重要部件,导航组件正是利用它们来在目的地之间实现导航。...在未来文章和视频,针对如何同特定导航 API 进行交互,我会介绍更多技术细节,比如导航到对话框目的地使用 SafeArgs 以及处理深层链接。

    1.7K30

    iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

    当用户到达一个新层级,导航栏需要做出这样改变: 导航栏标题应该变成当前层级标题。 当前标题左侧放置应有返回按钮,需要的话,返回按钮可以以前一层级标题命名。 使用当前视图标题作为导航栏标题。...如果在导航栏中使用了分段控件,请确保返回按钮标题命名准确。(更多使用指引请参阅本章第三节分段控件。) ?...举个例子,不要在同一个应用中使用不透明导航栏和半透明工具栏。在屏幕处于同一方向时,最好不要改变不同屏上导航背景图片、颜色和透明度。 确保你自定义返回按钮外观与操作仍然像一个返回按钮。...重要 不要创建多段式(multisegment)返回按钮返回按钮通常是用来帮助用户回到当前层级父层级中去。...不要创建一个自定义按钮来触发活动视图控制器。用户更习惯点击动作按钮使用系统提供服务。你应该学会如何更好地利用用户这一既定习惯,而不是强迫他们一种全新方式来完成同样事情。

    10.1K51

    360度无死角,Android Jetpack面试技巧大揭秘

    核心组件: NavGraph(导航图): 包含应用中所有目的地和它们之间导航关系。 NavController(导航控制器): 管理导航操作控制器,负责管理与目的地交互。...NavDestination(导航目的地): 表示导航图中一个页面或操作,定义了目的地属性和行为。...这三个核心组件共同构建了整个导航体系,使得在Android应用实现复杂导航结构变得更加简单和可维护。...在高级任务调度,我们可以: 自定义Worker: 实现Worker类执行具体任务,并通过Constraints来定义任务触发条件,如网络状态、电量等。...适度使用Room内存缓存: 使用@Query注解LiveData返回值时,Room会自动在内存维护缓存,但要注意不要过度依赖,以免造成内存浪费。

    21910

    写一个MVVM快速开发框架:谈一谈“单Activity+多Fragment”模式

    Navigation可以理解为一个管理fragment容器,在容器各个fragment可以实现任意跳转, 基础使用: 我们需要在布局创建Fragment容器: <androidx.fragment.app.FragmentContainerView...、返回栈配置: [7c6be5b489c745459a69ed343d420162~tplv-k3u1fbpfcp-watermark.image] NavController 字面意思就是导航控制器,...我们可以使用它进行灵活跳转,Google还出了一些Navigation Demo演示如何配合Toolbar和底部导航栏进行使用。 关于具体用法这里不讲解了,很多文章都有,也可以参考官网。...,我们可以自定义NavHostFragment去修复这个问题,具体参考项目代码 修改之后使用如下: android:name="androidx.navigation.fragment.NavHostFragment...:defaultNavHost="true" app:navGraph="@navigation/nav_main"/> 组件化中使用Navigation 我们通常使用底部导航栏将app

    1.6K40

    UINavigationController

    UINavigationController形式保存子控制器 使用push方法能将某个控制器压入栈 - (void)pushViewController:(UIViewController...:(BOOL)animated; //回到控制器(栈底控制器) - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated; 如何修改导航内容...导航内容由栈顶控制器navigationItem属性决定 UINavigationItem有以下属性影响着导航内容 //左上角返回按钮 @property(nonatomic,retain...可以分为2大类型 自动型:点击某个控件后(比如按钮),自动执行Segue,自动完成界面跳转 按住Control键,直接从控件拖线到目标控制器 如果点击某个控件后,不需要做任何判断,一定要跳转到下一个界面...Modal形式展示出来 Modal默认效果:新控制器从屏幕最底部往上钻,直到盖住之前控制器为止 //Modal形式展示控制器 - (void)presentViewController

    1.4K60

    Android开发之Activity创建跳转及传值

    说道AndroidActivity,如果你做过iOS开发的话,Activity类似于iOSViewController(视图控制器)。在应用能看到东西都是放在活动。...我们把这个工程创建一个新Activity,然后再有Hello World添加一个按钮,点击按钮跳转到我们创建Activity。在新按钮中点击Back返回到上一个Activity。...Intent与iOS开发NavigationController(导航控制器)极为相似,不过又有所不同。...intent.putExtra("extra_data", data); (3) 在新Activity我们需要获取传过来值显示在TextView上,并且点击一个Back按钮返回到上一层Activity...使用Intent打开系统功能 你可以协议方式打开系统某些功能,比如打开系统浏览器,系统拨号键盘等。

    3.2K100

    使用深层链接导航 | MAD Skills

    本系列文章致力于帮助开发者们打造更好现代 Android 开发体验,敬请关注。 今天为大家发布本系列文章第四篇: 使用深层链接 (Deep Links) 导航。...代码已经完成,所以我将会逐步解释如何利用导航组件来实现深层链接。 甜甜圈深层链接 在甜甜圈记录应用,有几个操作如果能快速到达会非常方便。...点击对话框目的地可以在右边显示这个目的地页面的属性: 点击目的地可以显示其属性,我们可以在属性栏创建一个新深层链接来导航到这个目的地 点击 Deep Links (深层链接) 旁边 + 来打开一个对话框...data 字段,它值是在之前导航工具深层链接对话框输入 URI,这也是从应用快捷方式导航到对话框目的地纽带。...现在每一个新编辑 (无论是创建新甜甜圈,还是编辑已存在甜甜圈) 都会生成一个通知,之后用户可以点击这个通知,回到这个正在编辑操作

    55730

    React-Native组件之 Navigator和NavigatorIOS

    来说,Android跳转通过Intent来进行跳转,而返回等操作,Android一般为我们实现了物理返回和软件返回两种。...Navigator可以在iOS和Android同时使用,而NavigatorIOS则是包装了UIKit库导航功能,使用户可以使用左划功能来返回到上一界面。...对象参数调用; navigationBar view 导航可选组件导航标题栏,需要设置左按钮,右按钮和标题属性。...常用方法 除了上面的属性之外,还有一些常用方法: push(route) 导航器跳转到一个新路由 pop()返回到上一页 replace(route)替换当前页路由,并立即加载新路由视图...popToRoute(route)一直回到某个指定路由 NavigatorIOS实例 和 Navigator 一样 NavigatorIOS 需要有个根视图来完成初始化,所以我们需要先创建一个组件来描述这个界面

    4.5K70

    MD04详细说明(四)

    前面几篇我们对MD04一些功能做了介绍,本篇将介绍如何在MD04添加导航按钮自定义按钮。...在MD04(库存需求清单)屏幕添加常用事务码有两种方法:一是通过配置导航参数文件,二是直接自定义添加。 1、导航配置文件 我们进入MD04,在菜单“环境”可以看到,导航参数文件: ?...比如第一个按钮,代表MD02,在这个界面直接点击,就可以直接运行当前物料MRP了。 下面我们来看看导航参数文件是如何配置?...然后保存设置(这里会需要请求号,自己创建一个就好了),再返回到MD04界面: ? 我们可以看到,刚刚添加查看BOM按钮,直接点击可以查看当前物料BOM。...以上就是MD04两种添加自定义按钮方法,我们需要注意是,这些方法都是根据用户设定,不会影响其他用户。 如有不对之处,请斧正。

    2.8K21

    # iOS导航栏控制Tips

    许久不写UI,对UI很多东西都生疏了,最近使用导航各种场景做一些总结。 1.导航显示与隐藏 导航显示与隐藏,分两种情况: 1.从不显示导航页面push到显示导航页面。...其他手势处理 return NO; } 2.统一重写导航返回按钮 有时候,我们可能需要统一工程返回按钮样式,比如都是 箭头+返回 或者都是 箭头。...比如,当页面用户输入了一些内容后,用户要点击返回,想要回到上一个页面时,提醒用户是否要缓存已经输入内容。 如果我们重写了导航返回按钮,那么处理这种情况就很Easy,不做赘述了。...在原始堆栈数组判断是否存在该类型控制器,如果存在记录其索引。 在复制数组中将索引及上方所有控制器移除。 把将要push出来控制器添加到复制数组。...,比如我们期望将要push出来控制器某个控制器后面或者前面,这样当点击返回或者侧滑时,就直接回到了指定页面了。

    1.7K31

    Android-Jetpack笔记-Navigation之Fragment支持复用

    上篇文章Android-Jetpack笔记-Navigation之Fragment使用提到,每次切换目的地,fragment是反复销毁重建,按照谷歌推荐1个APP只需1个activity思路开发,...) { NavGraph navGraph = new NavGraph(new NavGraphNavigator(provider)); //用自定义导航器来创建目的地...前边提到自定义导航器需要指定名字@Navigator.Name("fixFragment"),是因为不同类型目的地(页面)需要使用不同导航器,在NavigatorProvider里有个map存储了多个导航器...然后,使用自定义导航器FixFragmentNavigator来createDestination创建目的地,这样就把导航器和目的地绑定在一起了。...可以看出,Navigation思想是,把各种类型页面都抽象成目的地Destination,进行统一跳转,不同导航器则封装了不同类型页面跳转实现,由NavController统一调度,而许许多多目的地则编织成了一个导航

    2K20

    Human Interface Guidelines — Navigation

    Hierarchical Navigation 在每个屏幕上做一个选择,直到到达目的地。要到达另一个目的地,你必须按照之前步骤返回,或者从头开始,做出与之前不同选择。...·始终提供一个清晰路径 人们应该知道他们在 app 位置以及如何到达他们下一个目的地。不管导航样式如何,通过内容路径是符合逻辑、可预测、易于遵循,这是非常重要。...·设计一个信息架构,使其能快速和容易地得到内容 一种需要最少次数点击 、轻扫和屏幕方式组织您信息架构。 ·使用触摸手势创造流动性 让你界面更容易移动且摩擦最小。...例如,您可以让用户从屏幕边缘轻扫,返回到前一个屏幕。...·使用Navigation bar来遍历数据层次结构 Navigation bar 标题可以显示层次结构的当前位置,后退按钮可以很容易地返回到以前位置。

    97530

    深入浅出 NavigationUI | MAD Skills

    在本文中,我们将为大家讲解另外一个用例,即类似操作栏 (Action Bar)、底部标签栏或者抽屉型导航栏之类 UI 组件如何在应用实现导航功能。...我需要在应用增加一些页面,所以有必要使用抽屉式导航栏或者底部标签栏来辅助用户导航。但是我们该如何使用这些 UI 组件来集成导航功能呢?通过点击监听器手动触发导航动作吗? 不需要!无需任何监听器。...当处于 selectionFragment 时候,我们希望标题可以被更新并且显示返回按钮。...首先我需要添加一个 AppBarConfiguration 对象,NavigationUI 会使用该对象来管理应用左上角导航按钮行为。...selectionFragment,并且您可以看到标题已经更新,并且也显示了返回按钮,用户可以返回到之前页面。

    3K30

    iOS多控制器之UINavigationController&UITableBarController1. 多控制器2. UINavigationController3. UITableBarCont

    animated:(BOOL)animated; 2.4.3 出栈 返回到上一个控制器(将栈顶控制器移除) -(UIViewController *)popViewControllerAnimated...:(BOOL)animated; 返回到指定控制器 ?...Paste_Image.png 2.5 修改导航内容 导航内容由栈顶控制器navigationItem属性决定 UINavigationItem有以下属性影响着导航内容 //左上角返回按钮...childViewControllers 导航按钮使用原始图片不进行系统渲染: [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal...:c1]; tb.viewControllers=@[c1,c2,c3,c4]; 注意:展示顺序和添加顺序一致,和导航控制器不同,展现在眼前导航控制器根视图控制器也就是第一个添加到导航控制器视图

    1.3K40
    领券