Фрагмент сингла или сохранение состояния веб-просмотра - PullRequest
0 голосов
/ 07 ноября 2018

Вот что мне нужно, так это то, что у меня есть фрагмент внутри 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, поэтому никогда не должен вызываться OverrideUrlLoading.

Помощь будет высоко ценится

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Как сказал Аль-Амин, я мог бы сохранить некоторые ключи в своем URL, но у меня не было поддержки этого проекта со стороны бэкэнд-команды, так как этот модуль используется во многих других местах, поэтому они ничего не могли изменить, поэтому я решил это с помощью используя режим запуска для своей активности в качестве одного экземпляра

android:launchMode="singleInstance"

и для обратной печати

moveTaskToBack(true);

Таким образом, моя активность с веб-просмотром не будет прервана, пока я не укажу завершить действие.

0 голосов
/ 07 ноября 2018

Попробуйте этот фрагмент кода -

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 для получения сеанса и сохранить его в общих настройках . В противном случае вы можете отслеживать изменения страницы и использовать SharedPreferences для сохранения / получения последней страницы.

...