转动智能手机时,Android WebView会加载startpage

时间:2016-02-24 17:33:50

标签: java android webview reload

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

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中,用户可以更改页面... 现在我的问题是,每次用户转动他/她的手机时,即使它被设置为tPlan(并且哪个页面包含1),它也会加载R.string.vPlan。

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

谢谢。

2 个答案:

答案 0 :(得分:1)

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

1-您可以使用onSaveInstanceState()onRestoreInstanceState()来保存活动状态(即使用户旋转也要跟踪的所需变量)。结帐Saving Android Activity state using Save Instance StateRecreating an Activity

旋转设备时

2- Stop the activity from being recreated。但是这样Google Engineers suggest against

希望它有所帮助。

答案 1 :(得分:0)

尝试这个,如果有帮助

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
}

}