From a307889378abae9a6f783ddb126e2e6a157d2799 Mon Sep 17 00:00:00 2001 From: Mark Murphy Date: Mon, 26 Mar 2018 07:22:31 -0400 Subject: [PATCH] cross-port of WebViewFragment to Support Library --- .../android/webbeam/WebViewFragment.java | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 NFC/WebBeam/app/src/main/java/com/commonsware/android/webbeam/WebViewFragment.java diff --git a/NFC/WebBeam/app/src/main/java/com/commonsware/android/webbeam/WebViewFragment.java b/NFC/WebBeam/app/src/main/java/com/commonsware/android/webbeam/WebViewFragment.java new file mode 100644 index 000000000..3f8fa553d --- /dev/null +++ b/NFC/WebBeam/app/src/main/java/com/commonsware/android/webbeam/WebViewFragment.java @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * Modifications (c) 2018 CommonsWare, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.commonsware.android.webbeam; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.webkit.WebView; + +/** + * A fragment that displays a WebView. + *

+ * The WebView is automically paused or resumed when the Fragment is paused or resumed. + */ +public class WebViewFragment extends Fragment { + private WebView mWebView; + private boolean mIsWebViewAvailable; + + public WebViewFragment() { + } + + /** + * Called to instantiate the view. Creates and returns the WebView. + */ + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + if (mWebView != null) { + mWebView.destroy(); + } + mWebView = new WebView(getContext()); + mIsWebViewAvailable = true; + return mWebView; + } + + /** + * Called when the fragment is visible to the user and actively running. Resumes the WebView. + */ + @Override + public void onPause() { + super.onPause(); + mWebView.onPause(); + } + + /** + * Called when the fragment is no longer resumed. Pauses the WebView. + */ + @Override + public void onResume() { + mWebView.onResume(); + super.onResume(); + } + + /** + * Called when the WebView has been detached from the fragment. + * The WebView is no longer available after this time. + */ + @Override + public void onDestroyView() { + mIsWebViewAvailable = false; + super.onDestroyView(); + } + + /** + * Called when the fragment is no longer in use. Destroys the internal state of the WebView. + */ + @Override + public void onDestroy() { + if (mWebView != null) { + mWebView.destroy(); + mWebView = null; + } + super.onDestroy(); + } + + /** + * Gets the WebView. + */ + public WebView getWebView() { + return mIsWebViewAvailable ? mWebView : null; + } +}