在使用NavDeepLinkBuilder时,应使用Activity中的NavController,而不是使用ApplicationContext或SupportFragmentManager。 具体代码示例如下:
在Activity中:
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); NavDeepLinkBuilder deepLinkBuilder = NavDeepLinkBuilder.create() .setGraph(R.navigation.my_nav_graph) .setDestination(R.id.my_destination) .setArguments(args); PendingIntent pendingIntent = deepLinkBuilder.createPendingIntent();
在ApplicationContext或SupportFragmentManager中:
NavController navController = NavHostFragment.findNavController(navHostFragment); //或者使用下一行替换它,NavHostFragment是您希望导航到的片段的实例 NavController navController = Navigation.findNavController(activity, R.id.my_nav_host_fragment); //修改后的代码 NavDeepLinkBuilder deepLinkBuilder = NavDeepLinkBuilder.create() .setGraph(R.navigation.my_nav_graph) .setDestination(R.id.my_destination) .setArguments(args); PendingIntent pendingIntent = deepLinkBuilder.createPendingIntent();