2013-04-05 98 views
0

我在活动中有一个WebView,它在一个屏幕方向上工作得很好。我可以导航到网站上的不同页面,当我点击后退按钮时,它会返回到之前访问过的前几页,但是,当我将Android平板电脑从一个方向旋转到另一个方向时。如从肖像到风景,这段历史已经失传。我通过savedInstanceState将WebView当前所在的URL传递给下一个方向。webview backstack在屏幕旋转后丢失,页面的后退按钮历史记录,Android

屏幕旋转后,新创建的WeView按预期打开页面到URL。当我按下后退按钮时,它不会去任何地方。

我该如何解决这个问题?

这里是我的一些代码,它是我处理后退按钮的部分。

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

if (keyCode == KeyEvent.KEYCODE_BACK){ 

    if (pageView.canGoBack()){ 

     if((coverImage.getVisibility())==(View.VISIBLE)){ 
      setYouTubeScreenDecor(false); 

      FragmentManager fragmentManager = getFragmentManager(); 
      FragmentTransaction fragmentTransaction = 
      fragmentManager.beginTransaction(); 
      fragmentTransaction.hide(youTubePlayerFragment); 
      fragmentTransaction.commit(); 
      if(playerVision!=null){ 
       playerVision.pause(); 
      } 

     return true; 

    } // end if 
     else { 
      pageView.goBack(); 

     return false; 

     } // end else 

    } // end if pageview.canGoBack 

    } // event keycode 

    return true; 

} // end if keyCode == KeyEvent.KEYCODE_BACK 

回答

0

我找到了答案。一个RTFM的例子。

WebBackForwardList restoreState(Bundle inState) 从给定的Bundle中还原此WebView的状态。

WebBackForwardList saveState(Bundle outState) 保存onSaveInstanceState(Bundle)中使用的此WebView的状态。