Singleton Fragment или сохранить состояние веб-просмотра

Здесь то, что я хочу, это то, что у меня есть фрагмент внутри действия, и у него есть веб-представление, которое в основном является чатом для обслуживания клиентов. Это действие будет запущено с помощью кнопки в другом действии,

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

Итак, что я пробовал, это

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 никогда не вызывается.

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


person Android    schedule 07.11.2018    source источник


Ответы (2)


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

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

Или попробуйте использовать этот способ -

Если веб-сайт начинает сеанс, вы можете использовать это для получения сеанса и сохраните его в общих настройках. В противном случае вы можете отслеживать изменения страницы и использовать SharedPreferences для сохранения/получения последней страницы.

person Al-Amin    schedule 07.11.2018
comment
Я уже пробовал приведенный выше пример, и он не работает :( и для других вариантов, которые вы упомянули, чтобы сохранить файлы cookie и отслеживать изменения страницы, я не получаю никакого обратного вызова для изменения страницы, поскольку URL-адрес не изменяется или он не открывает новый URL-адрес — это просто экран чата, на котором пользователь общается со службой поддержки клиентов. - person Android; 07.11.2018
comment
codexpedia.com/android/ проверить этот URL надеюсь, что это поможет вам. - person Al-Amin; 07.11.2018
comment
Он вызывает некоторую функцию с использованием java-скрипта. Мне нужен способ сохранить этот фрагмент/состояние веб-представления, и всякий раз, когда этот фрагмент показывает этот фрагмент/веб-представление из сохраненного состояния, а не с самого начала. Так же, как одноэлементный класс - person Android; 07.11.2018
comment
Вы можете сохранить некоторые параметры в своем URL-адресе, чтобы сохранить состояние. - person Al-Amin; 07.11.2018

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

android:launchMode="singleInstance"

и для пресса на спине

moveTaskToBack(true);

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

person Android    schedule 08.11.2018