【发布时间】:2020-01-17 18:14:50
【问题描述】:
我想使用Navigation Component 将Fragment 中的MediaStream 对象传递给Activity。 MediaStream 类属于 WebRTC。因此,我无法触摸它以使其可打包或可序列化以传递对象。
这是片段中的代码:
// Creating a PeerConnection with two callbacks
// one is triggered when an ICE candidate is received
// the other one is triggered when a MediaStream is received
localPeer = peerConnectionFactory.createPeerConnection(
rtcConfig,
object: CustomPeerConnectionObserver("localPeerCreation"){
override fun onIceCandidate(iceCandidate: IceCandidate?) {
// not relevant for this talk
}
override fun onAddStream(mediaStream: MediaStream?) {
super.onAddStream(mediaStream)
// TODO: create a new Activity and pass media stream to it for displaying
StreamsFragmentDirections.actionStreamsFragmentToStreamActivity(mediaStream)
}
})!!
正如 TODO 行所暗示的,我最初的目标是将MediaStream 对象传递给应该显示流的新活动。
但我不知道该怎么做。在导航图编辑器中,我选择了<inferred type> 作为mediastream 的类型,但这并没有达到预期的效果。这里,来自导航图xml布局的相关部分:
<activity
android:id="@+id/streamActivity"
android:name="com.john.elia.ui.activities.StreamActivity"
android:label="StreamActivity" >
<argument
android:name="mediaStream" />
</activity>
但是编译器抱怨说它需要一个 Int 但找到了一个 MediaStream。
如何传递 MediaStream 对象?在我发现的所有示例中,它们只显示了如何传递基本类型,如 String、Int 等。自定义类型的对象怎么样?
【问题讨论】:
-
您只能将 Parcelable 或 Serializable 对象发送到活动,无论是否有导航都是如此。
-
根据文档支持的自定义大小参数应该是可打包或可序列化的。
标签: android navigation arguments android-architecture-navigation