以下代码来自Kotlin示例项目,我想我总是可以写sampleVideoView? = findViewById<VideoView>(R.id.videoView)
,对吗?
以及更多
代码sampleVideoView?.setVideoURI(Uri.parse(HLS_STREAMING_SAMPLE))
与if (sampleVideoView!=null){sampleVideoView.setVideoURI(Uri.parse(HLS_STREAMING_SAMPLE))}
等效,对吗?
class MainActivity : AppCompatActivity(){
private var sampleVideoView: VideoView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
sampleVideoView = findViewById<VideoView>(R.id.videoView)
sampleVideoView?.setVideoURI(Uri.parse(HLS_STREAMING_SAMPLE))
...
答案 0 :(得分:3)
sampleVideoView? = findViewById(R.id.videoView)
这不是有效的语法。 ?
用于将类型标记为可空,并用于安全地访问包含这些可空类型的变量。
代码sampleVideoView?.setVideoURI(Uri.parse(HLS_STREAMING_SAMPLE))等同于if(sampleVideoView!= null){sampleVideoView.setVideoURI(Uri.parse(HLS_STREAMING_SAMPLE))},对吗?
真。但是,如果你有例如val x = y?.getName()
变量x
将是null
或之后包含y
的名称。它不仅仅是在!= null
&#34;正如你的榜样所暗示的那样。
答案 1 :(得分:3)
你可以忘记findView方法并用kotlin android扩展插件替换它
yourVideoViewID.setVideoURI(Uri.parse(HLS_STREAMING_SAMPLE))
之后你可以写:
oc exec
答案 2 :(得分:0)
以下是将可空值分配给可空变量的正确语法。您在作业中不需要问号
sampleVideoView = findViewById<VideoView>(R.id.videoView)
第二个陈述是等价