首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何全局初始化VideoView?(在onCreate之外) Kotlin

如何全局初始化VideoView?(在onCreate之外) Kotlin
EN

Stack Overflow用户
提问于 2019-06-26 05:09:46
回答 2查看 109关注 0票数 0

我正在尝试在我的登录/登录活动中创建视频背景(类似于Spotify和其他应用程序)。我关注了这段视频,https://www.youtube.com/watch?v=WLwQ3SJjWfY

但是我必须在我的onCreate中初始化我的视频背景(VideoView),因为我不知道如何全局声明它。

因此,我的onPause和onDestroy方法无法访问它。

我可以在我的onCreate中以某些方式声明它,但是一旦我全局地声明它,我就会得到一个初始化错误。

这就是我在onCreate中使用的方法,它工作得很好,var videoBG = findViewById(R.id.videoView)

我试着在全球范围内做到以下几点:

代码语言:javascript
复制
var videoBGGlobal:VideoView
var videoBGGlobal = VideoView(this)
var videoBGGlobal: VideoView = VideoView(this)
var videoBGGlobal: VideoView? = VideoView(this)
var videoBGGlobal: VideoView = null as VideoView
var videoBGGlobal = null //and then tried to assign videoBGGlobal = 
//videoBG within the onCreate but it says VideoView isn't type Nothing?

我试了更多,但我忘了剩下的。

代码语言:javascript
复制
package ...
imports ...

class MainActivity {

//Global variables
var videoBGGlobal: VideoView = VideoView(this) //this just doesn't
var mMediaPlayer: MediaPlayer? = MediaPlayer() //this works
var mCurrentVideoPosition: Int? = 0 //this works

override fun onCreate() {
     var videoBG = findViewById<VideoView>(R.id.videoView) //here it //works
     }
 override fun onPause(){
    //need to access videoBGGlobal here
 }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-26 09:54:48

使用lateinit向Kotlin承诺,您将在第一次访问变量之前对其进行初始化:

代码语言:javascript
复制
class MainActivity {

  private lateinit var videoBGGlobal: VideoView

  override fun onCreate() {
    super.onCreate()
    videoBG = findViewById<VideoView>(R.id.videoView)
  }
}
票数 1
EN

Stack Overflow用户

发布于 2019-06-26 16:26:49

你需要通过lateinit var来定义videoview,如下所示

代码语言:javascript
复制
lateinit var mVideoView: VideoView
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56762040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档