我收到了这段代码(仅限相关部分):
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甚至阻止它加载页面?
谢谢。
答案 0 :(得分:1)
当你转动智能手机时,正在重新创建活动,并且正在重新初始化变量。因此,每次轮播时,whichPage
值都会设置为0
。您有两种选择:
1-您可以使用onSaveInstanceState()
和onRestoreInstanceState()
来保存活动状态(即使用户旋转也要跟踪的所需变量)。结帐Saving Android Activity state using Save Instance State和Recreating 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
}
}