Access the Bundle from navDeepLinkBuilder.setArguments(bundl



有一个服务在某个时刻会创建一个始终指向相同片段的通知。服务想要向片段发送一些键值数据。在意向书中,我会把它们作为附加项。PendingIntent没有putExtras方法,但NavDeepLinkBuilder有一个接受Bundle的setArguments方法。

val pendingIntent = NavDeepLinkBuilder(applicationContext)
.setComponentName(MainActivity::class.java)
.setGraph(R.navigation.nav_main)
.setArguments(myExtras)
.setDestination(R.id.destinationFragment)
.createPendingIntent()
val builder = NotificationCompat.Builder(this, CHANNEL_ID)
.setPriority(NotificationCompat.PRIORITY_MAX)
.setContentText("some text")
.setContentTitle("some text")
.setContentIntent(pendingIntent)
startForeground(NOTIFICATION, builder.build())

以后是否可以从目标Fragment访问提供给setArguments的捆绑包?我用以下方式尝试了一下,但它只是给我返回默认值:

activity?.intent?.extras?.let {
val myExtra = extras.getInt(KEY, DEFAULT_VALUE)
Timber.e("got the Value $myExtra")
}

是的,您可以从目标片段访问您的捆绑包。看看这个

//your fragment
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
super.onCreateView(inflater, container, savedInstanceState)
if (arguments != null) {
if (requireArguments().containsKey(YOUR_KEY)) {
//logic
}
}
}

最新更新