单例片段或保存Web视图状态

时间:2018-11-07 11:48:03

标签: android android-fragments android-activity webview savestate

在这里我想要的是我在一个Activity中有一个片段,它具有一个Web视图,该视图基本上是与客户服务聊天的。此活动将从另一个活动的按钮

开始

现在最棘手的部分是我想保存Web视图的当前会话,以便每当用户参加此活动或每当我使用此片段时,我也可以显示最后一次对话。

所以我尝试过的是

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;
    }
}

但是,当用户进行对话时,它不会加载其他网址,因此永远不会调用shouldOverrideUrlLoading。

高度重视帮助

2 个答案:

答案 0 :(得分:0)

尝试此代码段-

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获取会话和save it to Shared Preferences。否则,您可以keep track of page changes,并使用SharedPreferences保存/检索最新页面。

答案 1 :(得分:0)

正如Al-Amin所说,我可以在URL中保存一些密钥,但是我不支持后端团队对此项目的支持,因为该模块在许多其他地方都使用过,因此他们无法更改任何内容,因此我通过以下方法解决了此问题对我的活动使用启动模式作为单实例

android:launchMode="singleInstance"

,然后在背面按

moveTaskToBack(true);

因此,直到调用完该活动,我的Web视图活动才被破坏。