質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

Q&A

解決済

1回答

2043閲覧

【KOTLIN】WEBVIEW ANDROIDSTUDIO ホームとダッシュボードのボタンで表示するURLを変えたい

退会済みユーザー

退会済みユーザー

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Android Emulator

Android EmulatorはアンドロイドのOSで起動しているアンドロイドのデバイスの機能をシミュレートするソフトウェアです。Emulatorは開発者に複数の違う設定を持ったデバイスを必要とすることなくアプリケーションを開発しテストすることが可能になります。

0グッド

1クリップ

投稿2019/11/21 04:00

編集2019/11/22 00:27

お世話になります。KOTLINのwebviewについて質問させて頂きます。まず以下図の1と2をご覧ください。

イメージ説明

1と2で表示するURLを変更したいと考えております。

 #1がおされたときにgoogle.com を表示
#2がおされたときにyahoo.com を表示

#ためしたこと

ためしたことを記載させて頂きます。

val myWebView: WebView = findViewById(R.id.webview) myWebView.loadUrl("https://www.google.com")

色々試した結果なんとか自分なりにコードを作成し、上記に表示したMainActivity.ktの一番下の2行を加えて
無事webviewで表示させる事に成功しました。※他は割愛します。

#MainActivity.kt

package com.myapplication import android.os.Bundle import android.webkit.WebView import android.webkit.WebViewClient import com.google.android.material.bottomnavigation.BottomNavigationView import androidx.appcompat.app.AppCompatActivity import androidx.navigation.findNavController import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController import androidx.core.app.ComponentActivity.ExtraData import androidx.core.content.ContextCompat.getSystemService import android.icu.lang.UCharacter.GraphemeClusterBreak.T class MainActivity : AppCompatActivity() { var mWebView: WebView? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val navView: BottomNavigationView = findViewById(R.id.nav_view) val navController = findNavController(R.id.nav_host_fragment) // Passing each menu ID as a set of Ids because each // menu should be considered as top level destinations. val appBarConfiguration = AppBarConfiguration( setOf( R.id.navigation_home, R.id.navigation_reaction, R.id.navigation_dashboard, R.id.navigation_notifications /* メニュー追加する */ ) ) setupActionBarWithNavController(navController, appBarConfiguration) navView.setupWithNavController(navController) val myWebView: WebView = findViewById(R.id.webview) myWebView.loadUrl("https://www.google.com") } }

しかしMainactiviyに記載している為、Homeやダッシュボードボタンを切り替えてもすべてGoogleが表示されてしまいます。

これを解決する実装方法として
A案 Mainactiviyの中にもしもダッシュボードが押されていたら という判定を書く方法と
B案 Dashboardfragment.ktの中に以下を組み込む方法があります。
val myWebView: WebView = findViewById(R.id.webview)
myWebView.loadUrl("https://www.yahoo.com")

A案は「Homeかダッシュボードかいずれのボタンが押されているかIF文判定コードの記載方法」がわかりませんでした。
B案ですが、以下のように試して組み込んだ結果エラーが出てうまくいかず非常に困っています。

# Dashboardfragment.kt

package com.myapplication.ui.dashboard import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders class DashboardFragment : Fragment() { private lateinit var dashboardViewModel: DashboardViewModel override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { dashboardViewModel = ViewModelProviders.of(this).get(DashboardViewModel::class.java) val root = inflater.inflate(R.layout.fragment_dashboard, container, false) val textView: TextView = root.findViewById(R.id.text_dashboard) dashboardViewModel.text.observe(this, Observer { textView.text = it }) val myWebView: WebView = findViewById(R.id.webview) myWebView.loadUrl("https://www.yahoo.com") return root } }

val myWebView: WebView = root.findViewById(R.id.webview) このコードに対して、ボタンを実際押すと強制終了します。

「 D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.myapplication, PID: 17844 java.lang.IllegalStateException: root.findViewById(R.id.webview) must not be null at com.myapplication.ui.dashboard.DashboardFragment.onCreateView(DashboardFragment.kt:31)」というエラー

A案かB案いずれでも構いませんのでコードを添えて頂けると助かります。
宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

val myWebView: WebView = findViewById(R.id.webview)
myWebView.loadUrl("https://www.Ho.com")

投稿2019/11/22 00:28

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問