WebViewFragment

Последнее обновление: 23.12.2020

WebViewFragment представляет специальный тип фрагмента, предназначенный для работы с элементом WebView. Он также наследуется от базового класса Fragment, добавляя некоторую дополнительную функциональность. Фактически это обычный WebView, обернутый во фрагмент. Рассмотрим его работу на примере.

Создадим новый проект и определим у MainActivity следующий код:

package com.example.eugene.viewsapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebViewFragment;

public class MainActivity extends AppCompatActivity {

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

        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .add(R.id.container, new CustomWebViewFragment())
                    .commit();
        }
    }

    public static class CustomWebViewFragment extends WebViewFragment {

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

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View result= super.onCreateView(inflater, container, savedInstanceState);
            getWebView().getSettings().setJavaScriptEnabled(true);
            // настройка масштабирования
            getWebView().getSettings().setSupportZoom(true);
            getWebView().getSettings().setBuiltInZoomControls(true);
            getWebView().loadUrl("http://stackoverflow.com");
            return(result);
        }
        @Override
        public void onDestroyView() {
            super.onDestroyView();
        }
    }
}

А в разметке activity_main.xml определим элемент, в который будет добавляться фрагмент:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent" 
    android:layout_height="match_parent" />

Реализация фрагмента WebViewFragment похожа на реализацию любого другого фрагмента за тем исключением, что в методе onCreateView() происходит настройка элемента WebView. Для получения встроенного во фрагмент WebView используется метод getWebView(). И также к стандартным методам жизненного цикла добавляется метод onDestroyView(), который делает недоступным дальнейшее использование WebView и подготавливает его к последнему шагу - уничтожению в методе onDestroy()

Прежде чем запустить приложение, также установим в файл манифеста AndroidManifest.xml разрешение на работу с интернетом:

<uses-permission android:name="android.permission.INTERNET"/>

Запустим приложение, и нас переросит на сайт, который мы указали для WebView:

WebViewFragment в Android и Java
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850