我在Activity中有一个片段然后,在这个片段里面我也有一个webview。
问题:锁定我的屏幕并按下关闭按钮解锁后,我的活动被重新创建或我的网页视图被重新加载(不确定会发生什么)。
当我在设备中切换应用时会出现同样的问题。
我尝试更改configChanges和launchMode。这是我在android清单文件中的活动的一部分:
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustResize"
android:launchMode="singleTop"
>
</activity>
我也尝试在myCreate上检查我的savedInstanceState:
@Override
protected void onCreate(Bundle savedInstanceState) {
if (savedInstanceState == null) {
this.init(); // Initialize my webview
}
...
修改
@Override
protected void onResume() {
super.onResume();
//Check if the user is authenticated onResume
String message = getIntent().getStringExtra(MainActivity.FragmentIdentifier);
if(message == null || message.compareTo(MainActivity.showWebViewFragment) == 0){
changeFragment(new WebViewFragment());
}else if (message.compareTo(MainActivity.showLoginFragment) == 0){
changeFragment(new LoginFragment());
}
}
任何想法或代码示例都将不胜感激,谢谢!
答案 0 :(得分:0)
我发现我应该处理实例并检查是否已经保存,否则我的onResume总是可以重新加载我的webview。这是我的新代码:
@Override
protected void onResume() {
super.onResume();
//Check if the user is authenticated onResume
String message = getIntent().getStringExtra(MainActivity.FragmentIdentifier);
if (message == null || message.compareTo(MainActivity.showWebViewFragment) == 0) {
/*
Check if the instance is saved. If yes, is not necessary to create a new instance of the webview,
otherwise will always reload.
*/
if (!getSavedInstance()){
changeFragment(new WebViewFragment());
}
} else if (message.compareTo(MainActivity.showLoginFragment) == 0) {
changeFragment(new LoginFragment());
}
}
我宣布了一个新的全局变量
private Boolean savedInstance = false;
在这里我得到并设置
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
setSavedInstance(true);
}
public Boolean getSavedInstance() {
return savedInstance;
}
public void setSavedInstance(Boolean instance_saved) {
this.savedInstance = instance_saved;
}