フラグメントをテストしましたが、フラグメントを扱うと物事がはるかに複雑になり、フラグメント自体を保存して復元する必要があり、javascript 状態の Web ビューでは機能しない可能性があります。私が提案する解決策:
最初に、android:configChanges="orientation|screenSize|keyboard|keyboardHidden" をマニフェストに追加して、アプリが Android の代わりに構成の変更を処理するようにします。
横向きと縦向きの 2 つの異なるレイアウトを作成し、対応するレイアウト フォルダに配置します。webview の代わりに両方のレイアウトで、webview のプレースホルダーとして機能する LinerLayout を配置します。
コードで 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()
}