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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Android Debug Bridge(ADB)

Android Debug Bridge(ADB)は、接続された端末をAndroidエミュレータもしくはAndroidのインスタンスにアクセスに接続するためのツール。端末アクションをサポートし、様々なコマンドの実行の際に用いられるUnixシェルへのアクセスを提供します。

Android Studio

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

Q&A

解決済

1回答

427閲覧

ナビゲーションフラグメントの取得について

gogatu

総合スコア6

Android Debug Bridge(ADB)

Android Debug Bridge(ADB)は、接続された端末をAndroidエミュレータもしくはAndroidのインスタンスにアクセスに接続するためのツール。端末アクションをサポートし、様々なコマンドの実行の際に用いられるUnixシェルへのアクセスを提供します。

Android Studio

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

0グッド

0クリップ

投稿2023/08/12 04:20

実現したいこと

android studioでアプリを開発している。
メニューバーを作ろうとしており、ナビゲーションコントローラーを取得したい。

前提

BottomNavigationViewによる画面の移行をしようとしている。メニューバーとナビゲーションを関連付けさせるためにメニューコンポーネントとナビゲーションコントローラーをそれぞれ変数に代入しようとした。しかし、ナビゲーションホストフラグメントを取得する部分でエミュレーターで動作させているアプリが落ち、繰り返し停止しています、という表示が出る。

発生している問題・エラーメッセージ

↓デバッガー
savedInstanceState と赤文字で表示された

↓コンソール

Open logcat panel for emulator Pixel 3a API 34 extension level 7 x86 64 ターゲット VM に接続しました。アドレス : 'localhost:61248'、トランスポート: 'ソケット' ターゲット VM から切断されました。アドレス: 'localhost:61248'、トランスポート: 'ソケット'

↓ビルドの出力

We recommend using a newer Android Gradle plugin to use compileSdk = 34 This Android Gradle plugin (8.0.2) was tested up to compileSdk = 33. You are strongly encouraged to update your project to use a newer Android Gradle plugin that has been tested with compileSdk = 34. If you are already using the latest version of the Android Gradle plugin, you may need to wait until a newer version with support for compileSdk = 34 is available. To suppress this warning, add/update android.suppressUnsupportedCompileSdk=34 to this project's gradle.properties.

該当のソースコード

Kotlin

1package com.example.test2 2 3import androidx.appcompat.app.AppCompatActivity 4import android.os.Bundle 5import androidx.navigation.findNavController 6import androidx.navigation.fragment.NavHostFragment 7import androidx.navigation.ui.NavigationUI 8import com.google.android.material.bottomnavigation.BottomNavigationView 9 10class MainActivity : AppCompatActivity() { 11 override fun onCreate(savedInstanceState: Bundle?) { 12 // 下部メニューコンポーネントの取得 13 val bottomNavView: BottomNavigationView = findViewById(R.id.bottom_nav) 14 15 //ナビゲーションコントローラーを取得したい 16 //ここで失敗 17 val navController = findNavController(R.id.fragmentContainerView) 18 19 //これでも失敗 20 val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragmentContainerView) as NavHostFragment 21 val navController = navHostFragment.navController 22 23 // 下部メニューとナビゲーションを関連付け 24 NavigationUI.setupWithNavController(bottomNavView, navController) 25 26 super.onCreate(savedInstanceState) 27 setContentView(R.layout.activity_main) 28 } 29}

試したこと

ブレークポイントを使用してタイムアウトの原因がナビゲーションコントローラーの文であることを確認した。
ナビゲーションコントローラーをホストフラグメントを取得し、そこからコントローラーを取得することも試したが、結果は同じだった。

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

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

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

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

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

hoshi-takanori

2023/08/12 04:30

setContentView しないと view は存在しないので…。
gogatu

2023/08/12 04:51

コメントありがとうございます。 setContentViewでactivity_main.xmlを表示させなければいけないということですか?
gogatu

2023/08/12 04:54

解決しました。 super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) の部分をonCreateの最初に記述すると正常に動作しました。 hoshi-takanoriさん、解決のヒントを提供していただきありがとうございました。
guest

回答1

0

自己解決

onCreateの最後の部分に記述していた

Kotlin

1 super.onCreate(savedInstanceState) 2 setContentView(R.layout.activity_main)

の部分をonCreateの最初に記述すると正常に動作しました。
hoshi-takanoriさん、解決のヒントを提供していただきありがとうございました。

投稿2023/08/12 04:55

gogatu

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問