Android WebView 在转动智能手机时加载起始页

Android WebView loads startpage when turning smartphone

我得到了这段代码(仅相关部分):

public class MainActivity extends AppCompatActivity {
    private WebView webView;
    private int whichPage = 0;

    protected void onCreate(Bundle savedInstanceState) {
        webView = (WebView) findViewById(R.id.webView);
        webView.setWebViewClient(new WebViewClient());
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(this.getString(whichPage == 0 ? R.string.vPlan : R.string.tPlan));
    }
}

在 OptionsMenu 中,用户可以更改页面... 现在我的问题是,每次用户转动 his/her phone 时,它都会加载 R.string.vPlan,即使它被设置为 tPlan(并且 whichPage 包含 1)。

有没有办法阻止应用程序跳转到 vPlan 甚至完全阻止它加载页面?

谢谢。

当您转动智能手机时,activity 正在重新创建并且变量正在重新初始化。因此,每次旋转时,whichPage 值都会设置为 0。您有两个选择:

1- 您可以使用 onSaveInstanceState()onRestoreInstanceState() 来保存 activity 状态(即使在用户旋转时您也希望跟踪的必需变量)。签出 Saving Android Activity state using Save Instance State and Recreating an Activity

2- Stop the activity from being recreated on rotating the device. However Google Engineers suggest against 这样。

希望对您有所帮助。

如果有帮助,试试这个

public class MainActivity extends AppCompatActivity {
private WebView webView;
private int whichPage = 0;

protected void onCreate(Bundle savedInstanceState) {

if (savedInstanceState == null){

    webView = (WebView) findViewById(R.id.webView);
    webView.setWebViewClient(new WebViewClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl(this.getString(whichPage == 0 ? R.string.vPlan : R.string.tPlan));
} else {
    // do nothing
}

}