2016-08-22 12 views
0

私は自分のブラウザを作っています。私はそれを保存しようとしています。私は以下のことを試しましたが、私が探している解決策ではありません。WebViewの状態を画面の回転に保存します。

私はこの試みた:

<activity android:name=".About" 
    android:configChanges="orientation|keyboard|screenSize" /> 

が、問題はツールバーがリサイズされていないということですので、タイトルは小さく、ツールバーの高さにある最も小さい(私は風景の中に開始し、肖像画に回転している場合)タイトルは大きく、高さは大きくなります(私が肖像画で始まり、景色に回転すると)。

私が試した他のものは

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.blah); 
    if (savedInstanceState != null) 
     ((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState.getBundle("webViewState"); 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     Bundle bundle = new Bundle(); 
     webView.saveState(bundle); 
     outState.putBundle("webViewState", bundle); 
} 

ですが、WebViewのは正しく保存されていません。

回転時にツールバーのサイズに問題がなく、ウェブビューの状態を保存するにはどうすればよいですか?

設定の変更を処理してツールバーとテキストのサイズを変更しようとするとよいでしょうか?

ありがとうございます!

+0

可能な複製(http://stackoverflow.com/questions/12131025/android-preventing-webview-reload-on-rotate) – sumandas

+1

私は見つかりませんでした。この役職。私は見てみる –

答えて

0

Webview状態を独自のバンドルに保存する必要があります。また、super.onSaveInstanceState(outState)に電話することを忘れないでください。

@Override 
public void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.blah); 
    if (savedInstanceState != null) 
     ((WebView)findViewById(R.id.webview)).restoreState(savedInstanceState.getBundle("webViewState")); 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     Bundle bundle = new Bundle(); 
     webView.saveState(bundle); 
     outState.putBundle("webViewState", bundle); 
} 
+0

働いていない。 WebViewを再度読み込みます。 –

0

私は正常に動作します私のAndroidManifest.xmlファイル内

<activity android:name="XYZ.activity.your.browser.activity" android:configChanges="orientation|screenSize|keyboardHidden|keyboard" android:windowSoftInputMode="adjustPan"/>

を使用しています。サイズ変更の問題はありません。

通常のアクティビティではこれをお勧めしませんが、WebView、ツールバー、いくつかのボタンしかない場合は、これで問題ありません。

+0

はい、横向きモードで動作を開始して縦向きに回転させると、ツールバーのタイトルが小さすぎます。ツールバーの縦幅が縦長の場合よりも小さくなります。 –

0

@EpicPandaForceの改善とそれが動作します!

WebView webView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    if (savedInstanceState != null) 
     ((WebView) findViewById(R.id.webView)).restoreState(savedInstanceState.getBundle("webViewState")); 
    else { 
     webView = (WebView) findViewById(R.id.webView); 
     webView.loadUrl("https://www.YAHOO.com/"); 
    } 

} 

protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    Bundle bundle = new Bundle(); 
    webView.saveState(bundle); 
    outState.putBundle("webViewState", bundle); 
} 
[アンドロイド - 回しにWebViewのリロードを防止]の
関連する問題