单例片段或保存网页视图状态

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 不会被破坏。