閲覧いただきありがとうございます。
スマホの画面回転時にsetContentViewで縦画面or横画面のレイアウト読み込ませるようにしてます。
その際に現在のアクティビティのデータがが消去されてしまう仕様なのでもう一度WebViewを読み込ませて表示させています。
下記がそのコードになります。
kotlin
1 /* 画面回転時の処理 */ 2 @RequiresApi(Build.VERSION_CODES.LOLLIPOP) 3 override fun onConfigurationChanged(newConfig: Configuration) { 4 super.onConfigurationChanged(newConfig) 5 when (newConfig.orientation) { 6 /* 縦画面時の処理 */ 7 Configuration.ORIENTATION_PORTRAIT -> { 8 Log.d("onConfigurationChanged", "ORIENTATION_PORTRAIT") 9 //ステータスバー表示 10 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE 11 //タイトルバー表示 12 supportActionBar?.show() 13 // 縦画面用レイアウトを読み込み 14 setContentView(R.layout.activity_port) 15 // 新たなレイアウトを読み込んだのでwebviewを再設定(3回目になるとなぜかwebview表示されない) 16 webview = findViewById(R.id.webView_port_id) 17 webview.settings.loadWithOverviewMode = true 18 webview.settings.useWideViewPort = true 19 webview.getSettings().setBuiltInZoomControls(true) 20 webview.getSettings().setDisplayZoomControls(false) 21 webview.loadUrl(streamURL) 22 } 23 /* 横画面時の処理 */ 24 Configuration.ORIENTATION_LANDSCAPE -> { 25 Log.d("onConfigurationChanged", "ORIENTATION_LANDSCAPE") 26 // ステータスバー非表示 27 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN 28 // タイトルバー非表示 29 supportActionBar?.hide() 30 // 横画面用レイアウトを読み込み 31 setContentView(R.layout.activity_land) 32 // 新たなレイアウトを読み込んだのでwebviewを再設定(3回目になるとなぜかwebview表示されない) 33 webview_land = findViewById(R.id.webView_land_id) 34 webview_land.settings.loadWithOverviewMode = true 35 webview_land.settings.useWideViewPort = true 36 webview_land.getSettings().setBuiltInZoomControls(true) 37 webview_land.getSettings().setDisplayZoomControls(false) 38 webview_land.loadUrl(streamURL) 39 } 40 else -> { } 41 } 42 }
しかしこれを実行して、スマホを横画面→縦画面→横画面と交互に表示していくと縦画面3回目にWebViewが表示されなくなります。
表示されなくなるというのはWebViewがあった場所が真っ白になりスクロールバーもない状態の全く何も表示されていない状態を指します。
ログを見ても何もエラーは出ていないです。
横画面3回目も同じく何もWebViewが表示されないです。
それ以降は縦画面・横画面ともにWebViewは何も表示されなくなります。
縦画面時のみボタンを表示するようにしていますがそのボタンは正常に表示されます。
onsaveinstancestateでWebViewを保持する必要があると思ったのですが、昔のAndroidとは仕様が変わったのか画面回転してもActivityは保持されていてonsaveinstancestateが呼ばれることもonCreateが呼ばれることもなかったです。
ご教授よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー