2013-11-15 46 views
0

在我的应用程序中,我使用setRequestedOrientation()来设置应用程序的按钮点击方向,我的应用程序有一个显示本地网页的webview。改变方向后,Android WebView重新呈现用户界面。

我正在使用解决方案,如下面的链接中所述,停止方向更改时重新加载页面。
http://www.devahead.com/blog/2012/01/preserving-the-state-of-an-android-webview-on-screen-orientation-change/

唯一的区别是,我没有在我的活动onSaveInstanceStateonRestoreInstanceState

在我的情况是什么发生,我的网络视图不重新加载时,我改变方向,但它只是改变方向时重新呈现UI。

它发生像它首先显示的用户界面,然后它显示白色的空白屏幕几秒钟,然后再次显示用户界面。

我该如何解决它?

回答

0

曾几何时,我使用他们的实现,但我读了Android文档后,我意识到他们的大部分代码是毫无意义的,因为注册配置更改(在清单中)意味着您的活动不会被销毁它通常是。

长话短说,你不需要使用一个FrameLayout作为你的webView的容器,你可能不需要onConfigurationChanged等。如果我得到一些时间,我会张贴一些代码作为例子。

现在,请确保您在您的清单文件,因为在方向改变装置下面的

android:configChanges="keyboard|keyboardHidden|orientation" 

android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 

,而不是可能会得到一个屏幕尺寸的变化

编辑这就是我所做的(从我的一个项目中删除,所以我可能错过了小细节)

在AndroidManifest.xml

<activity android:name=".Activities.WebWrapperActivity" 
      android:theme="@android:style/Theme.NoTitleBar" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenSize"/> 

web_wrapper_activity_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <WebView android:id="@+id/web_wrapper_activity_web_view" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:scrollbarStyle="outsideOverlay"/> 
</LinearLayout> 

的活性(或它的一部分)

public class WebWrapperActivity extends Activity { 
    private WebView _webView; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.web_wrapper_activity_layout); 

     init(); 
    } 

    private void init() { 
     _webView = (WebView) findViewById(R.id.web_wrapper_activity_web_view); 
     _webView.setScrollbarFadingEnabled(true); 
     _webView.getSettings().setLoadsImagesAutomatically(true); 
     _webView.getSettings().setJavaScriptEnabled(true); 

     _webView.getSettings().setAllowFileAccess(true); 
     _webView.getSettings().setSavePassword(false); 
     _webView.getSettings().setPluginState(WebSettings.PluginState.ON); 

     _webView.loadUrl(“http://www.google.com”); 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     _webView.saveState(outState); 
    } 
} 

正如我前面提到的,可能不需要onConfigurationChanged如果您的webView是活动中的唯一视图。

如果您有问题,请告诉我

相关问题