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

Как сохранять состояние 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.
  • Вопрос задан
  • 486 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
atetc
@atetc
Админ Android dev-s чата: https://goo.gl/8JKF1f
Пусть WebView живет во фрагменте, тогда при повороте не будет изменений, но вам придется логику переписать. Простых путей сохранения состояния WebView нет.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы