我可以写sampleVideoView吗? =在Kotlin中的findViewById <VideoView>(R.id.videoView)?
下面的代码是来自Kotlin示例项目,我想我总是可以写sampleVideoView? = findViewById<VideoView>(R.id.videoView)
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)) ...
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
”,你的例子可以建议。
你可以忘记findView方法,并用kotlin android扩展插件替换它
apply plugin: 'kotlin-android-extensions'
之后,你可以写:
yourVideoViewID.setVideoURI(Uri.parse(HLS_STREAMING_SAMPLE))
以下是将可为空的值赋给可为空的变量的正确语法。 在作业中不需要问号
sampleVideoView = findViewById<VideoView>(R.id.videoView)
第二个陈述是等价的