Android&Navigation全面介绍&全新的Fragment管理器,面试篇

public void navigate(@IdRes int resId,
@Nullable Bundle args,
@Nullable NavOptions navOptions,
@Nullable Navigator.Extras navigatorExtras) // 可设置共享元素动画参数

public void navigate(Uri deepLink,
NavOptions navOptions,
Navigator.Extras navigatorExtras)

  • resId都是可选参数

通过实现抽象类NavDirections创建自定义的对象来描述跳转目标(action)和传参(bundle)

public void navigate (NavDirections directions,
NavOptions navOptions,
Navigator.Extras navigatorExtras)

  • directions都是可选参数

resId可以是XML中的action或者destination节点id, 如果是action则会附带action的配置, 如果是destination则不会附带destination节点下的子节点action(写了白写).

args 即需要在fragment之间传递的Bundle参数, 但是导航还支持另外一种插件形式的传递参数方式-安全参数SafeArgs, 后面提到.

navOptions 即导航页面一些配置选项(例如动画)

返回上级

public boolean navigateUp ()
public boolean navigateUp (DrawerLayout drawerLayout)
public boolean navigateUp (AppConfiguration appConfiguration)

出栈

弹出栈, 即从Nav回退栈中清除Fragment.

public boolean popBackStack (int destinationId, // 目标id
boolean inclusive) // 是否包含参数目标

public boolean popBackStack ()
// 弹出当前Fragment

目的地变化监听器

每次进行跳转等页面变化时都会回调该监听器

public void addOnDestinationChangedListener (NavController.OnDestinationChangedListener listener)
public void removeOnDestinationChangedListener (NavController.OnDestinationChangedListener listener)

public interface OnDestinationChangedListener {
/**

  • 导航完成以后回调函数(但是可能动画还在播放中)
  • @param 控制导航到目标的导航控制器NavController
  • @param 目标页面
  • @param 导航到目标页面的参数
    */
    void onDestinationChanged(@NonNull NavController controller,
    @NonNull NavDestination destination, @Nullable Bundle arguments);
    }

DeepLink

NavDeepLinkBuilder createDeepLink ()
// 内部就是调用的DeepLinkBuilder的构造函数

boolean handleDeepLink(Intent intent)

NavDestination getCurrentDestination ()

NavigatorProvider getNavigatorProvider ()

NavInflater getNavInflater()

Bundle saveState ()
void restoreState (Bundle navState)
// 用于处理NavController的状态获取和恢

  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值