私はフラグメントをテストしましたが、フラグメントを扱うとはるかに複雑になり、フラグメント自体が保存と復元を必要とします。これはjavascript状態のwebviewでは機能しない可能性があります。記事のどこかに変更を加えて私が提案した解決策になった:
まず、android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
を追加して、アプリケーションがアンドロイドの代わりに設定変更を処理するようにします。
ランドスケープとポートレートの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
で
:WebViewのは、古いプレースホルダーから削除され、新しいレイアウトに戻ってそれを追加しますどの
initui
と呼ばれる
onConfigChange
で
@Override
public void onConfigurationChanged(Configuration newConfig)
{
((LinearLayout)findViewById(R.id.webviewPlace)).removeAllViews();
super.onConfigurationChanged(newConfig);
initUI();
}
。
oncreate()
initui()
とすると、最初にuiが初期化されます。
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
initUI()
}
私はそれが誰かにとって参考になりたいと思っています。それはようです。..リソースの下のフォルダとこの設定のために必要なレイアウトに言及 -
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.activity_splash);
}
出典
2012-12-18 17:07:04
Ali
私は言った、それは動作しません。ビューを再作成し、Webビューをリフレッシュします。 android:configChanges = "orientation"この動作を防止します。 – Ali
私はフラグメントについて読んだけど、実際にどのように動作するのか分かりません!それはアンドロイド2.2で動作しますか? – Ali
サポートv4ライブラリを使用しています。実際の多くのアプリケーションでは、フラグメントが使用されます。それについて学ぶべきときまであなたに任せます。他の解決策はあなたを助け、断片を必要としません。しかし、フラグメントについて学びたい場合は、NewProject> MasterDetailedFlowまたはViewpagerテンプレートでテンプレートを見ることができます。 – wtsang02