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
}
}
我得到了这段代码(仅相关部分):
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
}
}