单例片段或保存网页视图状态
Singleton Fragment or save web view state
我想要的是我在 Activity 中有一个片段,它有一个网络视图,基本上是与客户服务聊天。此 activity 将从另一个 activity、
中的按钮启动
现在棘手的部分是我想保存 Web 视图的当前会话,以便每当用户访问此 activity 或每当我使用此片段时,我也可以显示最后一次对话。
所以我试过的是
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Saving the last loaded url in shared pref and then loading the same url in oncreateview
return true;
}
}
但是当用户进行对话时,它不会加载不同的内容 url 因此永远不会调用 shouldOverrideUrlLoading。
我们将非常感谢您的帮助
试试这段代码 -
public class Tab2Fragment extends Fragment {
private WebView webView;
private Bundle webViewBundle;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.tab2,
container, false);
webView = (WebView) ll.findViewById(R.id.webView1);
webView.setWebViewClient(new WebViewClient());
if (webViewBundle == null) {
webView.loadUrl("http://www.lucazanini.eu");
} else {
webView.restoreState(webViewBundle);
}
return ll;
}
@Override
public void onPause() {
super.onPause();
webViewBundle = new Bundle();
webView.saveState(webViewBundle);
}
}
或尝试使用这种方式 -
如果网站正在启动会话,那么您可以使用 this to get session and save it to Shared Preferences. Otherwise you can keep track of page changes,并使用 SharedPreferences 到 save/retrieve 最新页面。
正如 Al-Amin 所说,我本可以在我的 URL 中保存一些密钥,但我没有后端团队对这个项目的支持,因为这个模块在许多其他地方使用,所以他们无法改变任何事情,所以我通过将 activity 的启动模式用作单个实例
来解决这个问题
android:launchMode="singleInstance"
然后按
moveTaskToBack(true);
因此,在我调用完成 activity 之前,我的 activity 和 webview 不会被破坏。
我想要的是我在 Activity 中有一个片段,它有一个网络视图,基本上是与客户服务聊天。此 activity 将从另一个 activity、
中的按钮启动现在棘手的部分是我想保存 Web 视图的当前会话,以便每当用户访问此 activity 或每当我使用此片段时,我也可以显示最后一次对话。
所以我试过的是
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Saving the last loaded url in shared pref and then loading the same url in oncreateview
return true;
}
}
但是当用户进行对话时,它不会加载不同的内容 url 因此永远不会调用 shouldOverrideUrlLoading。
我们将非常感谢您的帮助
试试这段代码 -
public class Tab2Fragment extends Fragment {
private WebView webView;
private Bundle webViewBundle;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
LinearLayout ll = (LinearLayout) inflater.inflate(R.layout.tab2,
container, false);
webView = (WebView) ll.findViewById(R.id.webView1);
webView.setWebViewClient(new WebViewClient());
if (webViewBundle == null) {
webView.loadUrl("http://www.lucazanini.eu");
} else {
webView.restoreState(webViewBundle);
}
return ll;
}
@Override
public void onPause() {
super.onPause();
webViewBundle = new Bundle();
webView.saveState(webViewBundle);
}
}
或尝试使用这种方式 -
如果网站正在启动会话,那么您可以使用 this to get session and save it to Shared Preferences. Otherwise you can keep track of page changes,并使用 SharedPreferences 到 save/retrieve 最新页面。
正如 Al-Amin 所说,我本可以在我的 URL 中保存一些密钥,但我没有后端团队对这个项目的支持,因为这个模块在许多其他地方使用,所以他们无法改变任何事情,所以我通过将 activity 的启动模式用作单个实例
来解决这个问题android:launchMode="singleInstance"
然后按
moveTaskToBack(true);
因此,在我调用完成 activity 之前,我的 activity 和 webview 不会被破坏。