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: