フラグメントをテストしましたが、フラグメントを扱うと物事がはるかに複雑になり、フラグメント自体を保存して復元する必要があり、javascript 状態の Web ビューでは機能しない可能性があります。私が提案する解決策:
最初にandroid:configChanges="orientation|screenSize|keyboard|keyboardHidden"
、アプリが Android ではなく構成の変更を処理するように追加します。
横向きと縦向きの 2 つの異なるレイアウトを作成します。どちらのレイアウトでも、webview の代わりに、webview のプレースホルダーとして機能する FrameLayout を配置します。
次のように initUI メソッドを定義し、UI の初期化に関連するすべてをこのメソッドに入れます。
public void initui()
{
setContentView(R.layout.main);
if (wv == null) wv = new WebView(this);
((LinearLayout)findViewById(R.id.webviewPlace)).addView(wv);
findViewById(R.id.home).setOnClickListener(this);
}
Webview がまだ存在しない場合は作成され、その後setContentView(R.layout.main)
レイアウトに追加されます。必要なその他の UI カスタマイズは、この後に行われました。
とでonConfigurationChanged
:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
((LinearLayout)findViewById(R.id.webviewPlace)).removeAllViews();
super.onConfigurationChanged(newConfig);
initUI();
}
onConfigChange
webview では、古いプレースホルダーから削除され、呼び出されinitui
て新しいレイアウトに追加されます。
oncreate()
呼び出しで、initui()
UI が初めて初期化されます。
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initUI()
}
どなたかの参考になれば幸いです。