package shts.jp.android.nogifeed.fragments; import android.annotation.SuppressLint; import android.graphics.Bitmap; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.Fragment; import android.support.v7.widget.Toolbar; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; import android.webkit.WebViewClient; import shts.jp.android.nogifeed.R; import shts.jp.android.nogifeed.entities.News; import shts.jp.android.nogifeed.utils.ShareUtils; public class NewsBrowseFragment extends Fragment { private static final String TAG = NewsBrowseFragment.class.getSimpleName(); private static final String KEY_PAGE_URL = "key_page_url"; private WebView webView; private String beforeUrl; private News news; public static NewsBrowseFragment newInstance(News news) { Bundle bundle = new Bundle(); bundle.putParcelable("news", news); NewsBrowseFragment newsBrowseFragment = new NewsBrowseFragment(); newsBrowseFragment.setArguments(bundle); return newsBrowseFragment; } private final WebViewClient webViewClient = new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { if (!url.startsWith("http")) { if (url.startsWith(".")) { url = url.replace(".", "http://www.nogizaka46.com/"); } } super.onPageStarted(view, url, favicon); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); news = getArguments().getParcelable("news"); if (savedInstanceState != null) { beforeUrl = savedInstanceState.getString(KEY_PAGE_URL); } } @SuppressLint("SetJavaScriptEnabled") @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_news_browse, null); webView = (WebView) view.findViewById(R.id.browser); webView.setWebViewClient(webViewClient); webView.getSettings().setJavaScriptEnabled(true); if (!TextUtils.isEmpty(beforeUrl)) { webView.loadUrl(beforeUrl); } else { webView.loadUrl(news.url); } Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); toolbar.setTitle(news.title); toolbar.setNavigationIcon(R.drawable.ic_clear_white_18dp); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getActivity().finish(); } }); FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(ShareUtils.getNewsFeedIntent(news)); } }); return view; } @Override public void onSaveInstanceState(Bundle outState) { outState.putParcelable("news", news); outState.putString(KEY_PAGE_URL, webView.getUrl()); super.onSaveInstanceState(outState); } }