我曾经遇到类似的问题,但是需要添加一些内容才能使它与各种版本(包括ICS)一起工作。
在主应用程序活动中,我添加了Jason提供的略微不同版本。
<activity
android:name=".MyMainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name" >
我曾经在Honeycomb之前的版本上使用以下代码:
<activity
....
android:configChanges="orientation|keyboardHidden"
.... >
我不得不编写第一个示例,以使其在所有版本上都能运行。我目前正在使用片段和ActionBarSherlock进行向后兼容。
我还改变了保存和重新加载的方式:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.webview_layout, container, false);
webview = (WebView)v.findViewById(R.id.webview_fragment);
webview.getSettings().setJavaScriptEnabled(true);
if(savedInstanceState != null)
{
if (savedInstanceState.isEmpty())
Log.i(tag, "Can't restore state because bundle is empty.");
else
{
if (webview.restoreState(savedInstanceState) == null)
Log.i(tag, "Restoring state FAILED!");
else
Log.i(tag, "Restoring state succeeded.");
}
}
else
{
webview.setWebViewClient(new MyWebViewClient());
webview.getSettings().setPluginsEnabled(true);
webview.getSettings().setBuiltInZoomControls(false);
webview.getSettings().setSupportZoom(false);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setAllowFileAccess(true);
webview.getSettings().setDomStorageEnabled(true);
webview.loadUrl(mTabURL);
}
return v;
}
保存实例状态方法的代码:
@Override
public void onSaveInstanceState(Bundle outState)
{
if(webview.saveState(outState) == null)
Log.i(tag,"Saving state FAILED!");
else
Log.i(tag, "Saving state succeeded.");
}
希望这能有所帮助。
screenSize
提示和指向其他stackoverflow答案的链接,给它点个赞。 - sven