我可以编写sampleVideoView吗? =在Kotlin中的findViewById <videoview>(R.id.videoView)?

时间:2017-09-27 07:41:46

标签: kotlin

以下代码来自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))
...

3 个答案:

答案 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)

第二个陈述是等价