2016-08-22 3 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); 
} 

하지만 웹보기가 제대로 저장되지 않습니다.

회전 할 때와 툴바 크기에 문제가없는 웹 뷰 상태를 저장하려면 어떻게해야합니까?

설정 변경을 처리하고 툴바와 텍스트의 크기를 조정하면 더 좋을까요?

감사합니다.

+0

가능한 복제 (http://stackoverflow.com/questions/12131025/android-preventing-webview-reload-on-rotate) – sumandas

+1

내가 찾은 있지 않습니다 게시하다. 나는 모양을 가질거야 –

답변

0

Webview 상태를 자체 Bundle에 저장해야합니다. 또한 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); 
} 
[안드로이드 - 회전에 웹보기를 다시로드를 방지]의
관련 문제