我在我的应用程序中使用 viewpager 作为轮播。当应用程序第一次打开时它工作正常,但是当从另一个片段返回时,我收到一个错误,如 NullPointerException,我尝试了不同的方法,但没有任何效果。下面是我的代码和来自 firebase 的错误日志。
private fun initCarousal() {
carousal.adapter = TransactCarousalAdapter {
when (it) {
0 -> {
Case1()
}
1 -> {
Case2()
}
2 -> {
case3()
}
}
dots_indicator.setViewPager(carousal)
val handler = Handler()
val update = Runnable {
var currentPage = carousal.currentItem // Here am getting error LINE NO. : 87
if (currentPage == 1) {
currentPage = 0
} else {
currentPage++
}
carousal.setCurrentItem(currentPage, true)
}
timer.schedule(object : TimerTask() {
override fun run() {
handler.post(update)
}
}, 7000, 7000)
}
override fun onResume() {
super.onResume()
timer = Timer()
initCarousal()
}
override fun onStop() {
super.onStop()
timer.cancel()
}
错误日志
java.lang.NullPointerException: Attempt to invoke virtual method 'int androidx.viewpager.widget.ViewPager.getCurrentItem()' on a null object reference
com.bslamc.fingo.ui.dashboard.transact.TransactFragment.initCarousal$lambda-0(TransactFragment.kt:87)
android.os.Handler.handleCallback(Handler.java:938)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:255)
android.app.ActivityThread.main(ActivityThread.java:8212)
java.lang.reflect.Method.invoke(Method.java:0)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:632)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1049)
carousal
为空 - 看起来它没有在任何地方初始化。
您是否有这样一行可以添加来初始化它:
carousal = findViewById(R.id.carousal)