【Kotlin/Android Studio】WebViewでアプリ内で画面遷移する方法!

この記事からわかること

  • Kotlin/Android StudioWebView使い方
  • ブラウザ起動させずにアプリ内で遷移させる方法
  • WebViewClientshouldOverrideUrlLoadingメソッド

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

参考文献:公式リファレンス:WebView でのウェブアプリの作成

環境

WebViewでアプリ内で画面遷移する方法

WebViewでは画面遷移をしようとするとアプリ内では実行することができずデバイスのブラウザアプリが起動して表示されます。

【Kotlin/Android Studio】WebViewの実装方法!WebサイトやHTMLを表示する

せっかくアプリ内で表示していたのにいちいちブラウザアプリが起動していては意味が無いのでアプリ内で画面遷移するようにしていきます。

shouldOverrideUrlLoadingメソッド

WebViewではURLを開くときにデフォルトでホストアプリケーション(ブラウザアプリ)で実行されるように設定になっています。これを防ぎアプリ内で画面遷移させるにはMyWebViewClientshouldOverrideUrlLoadingメソッドメソッドでfalseを渡します。shouldOverrideUrlLoadingメソッドメソッドは制御するアプリをコントロールする役割をもちtrueに渡すとホストアプリケーション(ブラウザアプリ)、falseを渡すと自身のアプリで起動させます。

WebViewClientを継承した独自のクラスを生成し、shouldOverrideUrlLoadingメソッドをオーバーライドしてfalseを返すようにしておきます。


class MyWebViewClient : WebViewClient() {
    override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
        return false
    }
}

WebViewの実装自体は以下の記事を参考にしてください。

続いてWebViewを表示させるWidgetからsetWebViewClientメソッドを使用して先ほど作成したクラスのインスタンスを渡します。


class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val myWebView: WebView = findViewById(R.id.web_view)
        myWebView.settings.javaScriptEnabled = true

        val client = MyWebViewClient()
        myWebView.setWebViewClient(client)
        myWebView.loadUrl("https://appdev-room.com/")
    }
}

これでブラウザアプリを起動することなくアプリ内で画面遷移できるようになります。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index