自分のウェブサイトからのニュースフィードとして機能する小さなレイアウトのwebViewを持っています。回転を変更するたびにWebページが読み込まれます。webviewfragmentを使用して向きを変更すると、私のwebviewの状態を保存する方法
私はコードを編集し、状態を復元するために編集しました。devのサイトからオリエンテーションと画面サイズを含むように設定変更を含むようにAndroidのマニフェストを調整しました。
これは状態を保存するという問題を解決しますが、新しいデバイスのランドスケープモードではサイズのレイアウトが異なります。マニフェストセットではどのように画面サイズをオーバーライドしますか?状態を保存するために離れているが、私のマニフェストで画面サイズを使用していない。だから私は私のランドスケープレイアウトを使用することができます
ここでは、向きの変更のための私のコードです。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_homescreen);
if (savedInstanceState != null)
((WebView)findViewById(R.id.neweview)).restoreState(savedInstanceState);
svHomeScreen = (ScrollView) findViewById(R.id.svHomeScreen);
svHomeScreen.setScrollbarFadingEnabled(false);
wv = (WebView) findViewById(R.id.neweview
);
wv.setScrollbarFadingEnabled(false);
wv.getSettings().setJavaScriptEnabled(true);
wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
wv.getSettings().setRenderPriority(WebSettings.RenderPriority.NORMAL);
wv.getSettings().setLoadsImagesAutomatically(true);
wv.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
if (Build.VERSION.SDK_INT >= 19) {
// chromium, enable hardware acceleration
wv.setLayerType(View.LAYER_TYPE_HARDWARE, null);
} else {
// older android version, disable hardware acceleration
wv.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
wv.canGoBackOrForward(5);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv.setPadding(0, 0, 0, 0);
wv.loadUrl(NEWS);
はその後、私のマニフェストファイルは
<activity
android:name=".Homescreen"
android:label="@string/title_activity_homescreen"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
/>
IVEは、コンテナANウェブビューのフラグメントを追加しましたが、回転が風景であるとき、今表示が消えます。それから私はスイッチバックすると完全に消えます。だから私は保存状態を追加し、風景に回転したときにwebviewをロードしたが、肖像画に戻るときにアプリをクラッシュした
あなたは 'アンドロイドを追加しようとしました:configChanges = "オリエンテーション|画面サイズ" あなた' 'タグ(マニフェスト)での'? –
ええ、それを試して、それは状態を保存するが、それは私のスクリーンサイズをオーバーライドし、これは私が問題を引き起こす| screensizeオプションを元の状態を保存しないように戻すことに戻って –
あなたはフラグメント内に配置しようとすることができます - 画面が回転しているときには残酷にアクティビティとして表示されます。あなたは、断片化の中のwebviewがそのままの回転で生き残ることができるかもしれません。 – adelphus