为什么我的 Android 应用程序中的 Fragments 屏幕在切换几次选项卡后会变成空白?

问题描述 投票:0回答:1

我的应用程序背后的想法很简单。只有两个选项卡:音乐闹钟和历史日历。

当用户使用底部导航栏在选项卡之间来回切换时,可能在切换两到三次后,片段会变成空白,并且向用户呈现一个空屏幕。

我猜问题可能出在fragment的生命周期上,但不确定。

包含提到的问题的完整代码可以在这里找到:

https://github.com/shahab-devint/musical_alarm_calendar

非常感谢任何帮助或见解:)

android kotlin android-fragments uibackgroundtask
1个回答
0
投票

你是在模拟器上测试的还是在真机上测试的?

当我检查您的代码时,我没有遇到空屏错误。但我发现,当我在选项卡之间快速切换时,您的 onPageFinished 回调中存在空指针异常。

您需要使用

view?.
而不是
binding.

这是更新后的代码。

override fun onPageFinished(view: WebView?, url: String?) {
    // Add JavaScript interface
    view?.addJavascriptInterface(object : Any() {
        @android.webkit.JavascriptInterface
        fun passPersianDate(date: String) {
            // This method should receive the Persian date from JavaScript
            val persianDate = date
            val dateText = "تاریخ شمسی: $persianDate - Gregorian Date: $gregorianDate"
            binding.dateTextView.text = dateText
        }
    }, "JSInterface")

    // Execute your JavaScript here after the page has loaded
    view?.evaluateJavascript("const options = { year: 'numeric', month: 'long', day: 'numeric' }; const persianDate = new Date().toLocaleDateString('fa-IR', options); JSInterface.passPersianDate(persianDate);", null)
}
© www.soinside.com 2019 - 2024. All rights reserved.