Задать вопрос

Как сохранять состояние WebViev, которая находится в динамическом фрагменте?

Проблема такая, есть динамический фрагмент, в котором находится WebView. При повороте устройства, состояние WebView не сохраняется. Как сохранять состояние WebView?
Это если кратко, подробнее вот код:
MainActivity:
package com.example.mrbik_000.myapplication;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;



public class MainActivity extends AppCompatActivity implements FInterface {
    private WebView webView;
    private MyFragment myFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (savedInstanceState != null) {
            myFragment = (MyFragment) getSupportFragmentManager().findFragmentById(R.id.container);
            myFragment.setFragmentListener(this);
        } else {
            myFragment = new MyFragment();
            myFragment.setFragmentListener(this);
            getSupportFragmentManager().beginTransaction().add(R.id.container, myFragment).commit();
        }
    }

    public void fragmentInitialized() {
        if (webView == null) {
            webView = (WebView) findViewById(R.id.webView);
            webView.setWebViewClient(new WebViewClient());
            webView.getSettings().setJavaScriptEnabled(true);
            webView.loadUrl("http://stackoverflow.com/");
        }
    }
}

Fragment:
package com.example.mrbik_000.myapplication;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class MyFragment extends Fragment {
    private FInterface listener;
    private View view;

    public void setFragmentListener(FInterface listener) {
        this.listener = listener;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        listener.fragmentInitialized();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment, container, false);
        return view;
    }
}


Interface:
package com.example.mrbik_000.myapplication;

import android.os.Bundle;


public interface FInterface {
    void fragmentInitialized();
}


MainActivity имплементирует интерфейс FInterface, для того, что бы из этой активити можно было получить объект WebView.
  • Вопрос задан
  • 497 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Android-разработчик с нуля
    14 месяцев
    Далее
  • Академия Eduson
    Android-разработчик
    6 месяцев
    Далее
  • Skillbox
    Разработчик игр на Unreal Engine 4 с нуля до Middle
    12 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
atetc
@atetc
Админ Android dev-s чата: https://goo.gl/8JKF1f
Пусть WebView живет во фрагменте, тогда при повороте не будет изменений, но вам придется логику переписать. Простых путей сохранения состояния WebView нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 250 000 до 300 000 ₽
Aston Москва
от 220 000 до 260 000 ₽
Aston Санкт-Петербург
от 220 000 до 260 000 ₽