kotlin. UninitializedPropertyAccessException: в com.videoplayer.VideoPlayerActivity.onStart (VideoPlayerActivity.kt: 224) в android .app.Instrumentation.callActivityOnStart (Инструментарий. java: 1395) в android .app.Activity.performStart (Activity. java: 7361) в android .app.ActivityThread.handleStartActivity (ActivityThread. java: 3163) в android .app.servertransaction.TransactionExecutor .performLifecycleSequence (TransactionExecutor. java: 180) в android .app.servertransaction.TransactionExecutor.cycleToPath (TransactionExecutor. java: 165) в android .app.servertransaction.TransactionExecutor.execute *ifecycleState (TransactionExecutor. : 142) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 70) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 1970)
Определение переменных
private var captionIconVisibility: Boolean = false
private var videoStarted: Boolean=false
private var lastItemPosition: Int = 1
private var itemsCount: Int = 1
private var videoWatchedTime: Long=0
private var isPreparing: Boolean=true
private lateinit var currentPlayingPlayList: List<ObjectVideo>
private lateinit var sharedPrefMemory: SharedPrefMemory
private lateinit var mCastApplication: CastApplication
private lateinit var player: SimpleExoPlayer
private var isAdPlaying: Boolean =false
private lateinit var mediaPlayer: MediaPlayer
// private lateinit var dtm: DTM
private lateinit var adPlayerManger: AdPlayerManger
private var podSize = 1
private var adType = "midroll"
private var videoPaused: Boolean = false
private lateinit var objectVideo: ObjectVideo
var currentPlayingVodPosition = 0
private var previousVideoPositionNumber=-1
private var playBackPosition:Long=0
private var numberOfVideoWatched: Int=0
private var isCaptionsOff : Boolean = false
private var isInfoLayoutVisible:Boolean = false
private lateinit var binding: ActivityVideoPlayerBinding
private lateinit var videoPlayerActivityVM: VideoPlayerActvityVM
private var midAdPositionList = ArrayList<Long>()
private var runnable: Runnable? = null
private val mHandler: Handler = Handler()
private var watchedVideoStatus: HashMap<String, Long>? = null
private lateinit var bottomSheetBehavior :BottomSheetBehavior<View>
private lateinit var bottomSheetRv: RecyclerView
private lateinit var bottomSheetPlaylistAdapter: BottomSheetPlaylistAdapter
private var bottomSheetList = ArrayList<ObjectVideo>()
private var resumedPosition:Long=0
private var pageNumber:Int =1
private var url : String = ""
private var isPreviousClicked: Boolean = false
private lateinit var mDetector: GestureDetectorCompat
private lateinit var vods:ArrayList<ObjectVideo>
companion object {
var dtm:DTM = DTM()
// var vods: ArrayList<ObjectVideo> = ArrayList()
}
Мой метод OnCreate
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_video_player)
// flags to make media player screen full screen
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
bottomSheetBehavior = BottomSheetBehavior.from(binding.bottomsheetView.bottomSheetLayout)
bottomSheetRv = binding.bottomsheetView.bottomSheetRv
sharedPrefMemory = SharedPrefMemory(this, Context.MODE_PRIVATE, true)
// val mToolbar = binding.toolbarMediaPlayer as Toolbar
// setSupportActionBar(mToolbar)
// supportActionBar!!.setDisplayShowTitleEnabled(false)
val intentObj = intent
// dtm = intentObj.getSerializableExtra("dtm") as DTM
try {
vods = dtm.videoArrayList
bottomSheetList = vods
currentPlayingVodPosition = dtm.position
Log.d("loggingurl",vods[currentPlayingVodPosition].videoUrl);
url = dtm.url
if (!(vods.size>0 && currentPlayingVodPosition<vods.size)){
finish()
}
binding.movie = vods[currentPlayingVodPosition]
mediaPlayer = PlayerBuilder.getMediaPlayer(this, dtm, vods)
objectVideo = vods[currentPlayingVodPosition]
}
catch (e:java.lang.Exception){
Toast.makeText(this,"Something went wrong",Toast.LENGTH_SHORT).show()
}
bottomSheetBehaviorCallbacks()
binding.infoImg.setOnClickListener(this)
binding.repeatImg.setOnClickListener(this)
binding.captionImg.setOnClickListener(this)
videoPlayerActivityVM = ViewModelProviders.of(this)[VideoPlayerActvityVM::class.java]
videoPlayerActivityVM.getMoreVideosList().observe(this, androidx.lifecycle.Observer<List<ObjectVideo>> { moreVideosList ->
if (moreVideosList.isNotEmpty()) {
bottomSheetList.addAll(moreVideosList)
bottomSheetPlaylistAdapter.notifyDataSetChanged()
mediaPlayer.updatePlayList(moreVideosList)
} else {
GlobalObject.hasMoreDataMap[url] = false
}
})
mCastApplication = CastApplication(this, this)
mCastApplication.createSessionManager()
Ниже мой метод OnStart
override fun onStart() {
super.onStart()
Log.d("LifeCycle", "OnStart is called")
if (true) {
player = mediaPlayer.getPlayer()
isCaptionsOff = sharedPrefMemory.subtitlePreference
updateCaption()
player.addListener(this)
binding.exoPlayerView.player = player
binding.exoPlayerView.setOnClickListener(this)
//var pos:Long=0
mediaPlayer.playVideo(dtm.position,videoPlayerActivityVM.getSeekTime(objectVideo,videoPaused,resumedPosition))
setBottomSheetPlayList()
videoPaused = false
}
}