Части моего приложения отображаются только при возобновлении работы приложения (onResume) - PullRequest
0 голосов
/ 17 октября 2019

Когда мое приложение запускается изначально, не на всех устройствах, а на разных версиях Android + эмуляторе, веб-просмотры и заголовок моей панели инструментов будут просто белыми (текст установлен правильно, а URL-адрес веб-просмотра загружен правильно). Когда я просто возобновляю / закрываю приложение (не закрывайте его полностью, просто возобновляете), мое приложение работает нормально. Во время отладки ничего полезного не было обнаружено, потому что, кажется, все работает нормально, как и должно быть.

Одной из проблем является название моей панели инструментов. Он настроен правильно, но не будет отображаться, пока я не возобновлю свое приложение.

(toolBarTitle - «Сообщество»)

toolbar_title.text = toolBarTitle 
toolbar_title.visibility = View.VISIBLE

Мой WebView не отображается ни до тех пор, пока не возобновится

private fun initWebViews() {

    for (webView in webViewArray) {
        webView.settings.run {
            javaScriptEnabled = true
            domStorageEnabled = true
            allowFileAccess = true
            allowContentAccess = true
        }
        webView.addJavascriptInterface(JavaScriptBridge(this), "Android")

        (webView.parent as SwipeRefreshLayout).setOnRefreshListener {
            webView.clearCache(true)
            webView.loadUrl("about:blank")
            webView.reload()
            webView.loadUrl(webView.url)
        }

        webView.webViewClient = object : WebViewClient() {
            override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
                //super.onPageStarted(view, url, favicon)
                webView.tag = "started"

                webViewsInitialized += 1

                if (!NetworkHandler.hasActiveInternetConnection(applicationContext)) {
                    include_no_connection.visibility = View.VISIBLE
                }

                if (view == getCurrentWebView()) {
                    showLoading()
                    url?.let { handleToolbarTitle(viewanimator_main.displayedChild, it) }
                }

                // desc: Wenn beim Logout die logoutpage aufgerufen wird dann den weiteren logout prozess initieren
                if (url!!.contains("logout.php")) {
                    isLoggedOut = true
                    initiateLogout()
                }
            }

            override fun onPageFinished(view: WebView?, url: String) {
                //super.onPageFinished(view, url)
                webView.tag = "finished"

                view?.scrollTo(0, 0)

                if (view == getCurrentWebView()) {
                    hideLoading()

                    (view.parent as SwipeRefreshLayout).isRefreshing = false

                    if (include_no_connection.visibility == View.VISIBLE && NetworkHandler.hasActiveInternetConnection(applicationContext)) {
                        include_no_connection.visibility = View.GONE
                    }
                }
                webView.evaluateJavascript(JS_CUSTOMER_ID_CHANGED) {}
                webView.evaluateJavascript(JS_NOTIFICATIONS) {}

                Log.d(TAG, "PageFinished " + view?.url);
            }



            override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
                super.shouldOverrideUrlLoading(view, request)

                val currentUrl = request?.url.toString()

                // desc: Externe Links werden im Browser geöffnet

                if (!currentUrl.contains(DTW)) {
                    view?.context?.startActivity(Intent(ACTION_VIEW, Uri.parse(currentUrl)))
                    return true
                }

                // desc: Wenn die angesteuerte url für einen anderen tab bestimmt ist wird diese umgeleitet
                val mappedResult = MappingUtil.mapTargetUrl(currentUrl, viewanimator_main.displayedChild)

                if (viewanimator_main.displayedChild != mappedResult && webView != webview_community && webViewArray[mappedResult].url != currentUrl) {
                    selectNavItem(mappedResult, false)
                    webViewArray[mappedResult].loadUrl(currentUrl)
                    showLoading()
                    return true
                }
                return false
            }
        }
...