我想将中的MediaStream
对象传递Fragment
给Activity
使用Navigation Component
。在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
对象传递给应该显示流的新Activity。但是我不知道该怎么做。在“导航图编辑器”中,我选择了<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
,但是通过遵循现代应用程序体系结构的原理,您不必再这样做,另请参阅应用程序体系结构指南
一般的想法是将您的数据存储在存储库(真相的唯一来源)中,Activity
s和Fragment
s可以通过一些自定义类扩展访问它们ViewModel
。
所以一旦你获得任何类型的数据(的MediaStream
中)Fragment
,你应该把它传递到存储库,导航到下一个UI组件,并将它从它自己的帮助存储库中取出数据ViewModel
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句