読者です 読者をやめる 読者になる 読者になる

【Android】タブレイアウトでFragmentで指定しているWebViewをブラウザバックする方法

単純な構造として、

  • MainActivity.java
  • WevFragment.java

があるとします。

Fragmentは

  • fragment_web.xml

があるとします。(ここは別に重要じゃないけど)


スポンサーリンク





WebFragment.java

とりあえずWebFragment.javaでパブリックなWebViewを宣言してonCreateViewで処理を書いておきましょう。

public class WebFragment extends Fragment {
    public static WebView webView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_web, container, false);

        webView = (WebView) view.findViewById(R.id.web_view);
        // 続きの処理は書く
        return view;
    }
}

端末の戻るキーでブラウザバックする

タブレイアウトでWebViewを使っているとFragmentに処理を書いてもブラウザバックが効かなかったです。

多分タブレイアウトに限ったことではなくFragmentを使ってWebViewを表示しているときはこうするのが正しいのはないかと思います。

間違っていたら教えてください。

MainActivityに処理を書きます。

    @Override
    public void onBackPressed() {
        if (WebFragment.webView!=null) {
            if (WebFragment.webView.canGoBack()) {
                WebFragment.webView.goBack();
            }
        }
    }

onBackPressedで戻るキーの押下を取得して、処理を書きます。
こちらはActivityでWebViewを表示するときと同じですが、違う部分はWebFragmentのWebViewを指定しているだけです。

簡単ですね。

考えれば行き当たりそうな結果です。