LoginSignup
0
1

【忘備録】startActivity(intent)で画面遷移できずアプリが落ちる(なんで?)

Last updated at Posted at 2024-02-07

startActivity(intent)で画面遷移できず沼りまくったのでメモ

Android 超初心者が画面遷移で沼ったので忘備録



MainActivity.kt のコードはちゃんと書いていた

MainActivity.kt
    // ボタンクリックで画面遷移
    val mBtn = findViewById<Button>(R.id.btn_1)
    mainBtn.setOnClickListener{
            val intent = Intent(this, MainActivity2::class.java)
            startActivity(intent)
    }

idも一致させていて、アラートとか一切出ていなかった。(デバッグも)
もちろんimport android.content.Intentもちゃんと書いてた。
ただボタンを押すとアプリが強制終了する、なぜ?



Bottom Navigation Views Activity の初期コードのせいだった

MainActivity(遷移元) は [Empty Views Activity] で作ってたが、MainActivity2(遷移先) は [Bottom Navigation Views Activity] で作っていた。



MainActivity2 を生成した際、初期から入っているコードが干渉してたぽい

以下ソースの// ここから// ここまで部分をコメントアウトすることで無事に画面遷移できた。

MainActivity2.kt
package com.example.gominohi

import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView
import android.content.Intent

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 com.example.gominohi.databinding.ActivityMain2Binding

class MainActivity2 : AppCompatActivity() {

    private lateinit var binding: ActivityMain2Binding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)

        // ここから
        binding = ActivityMain2Binding.inflate(layoutInflater)
        setContentView(binding.root)

        val navView: BottomNavigationView = binding.navView

        val navController = findNavController(R.id.nav_host_fragment_activity_main2)
        // 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_dashboard, R.id.navigation_notifications
            )
        )
        setupActionBarWithNavController(navController, appBarConfiguration)
        navView.setupWithNavController(navController)

        // ここまで
    }
}

初期で書いてくれてるコードを強引にコメントアウトしたけど、結局ナビゲーションビューの設定組むときに画面遷移できなくなりそう😢


初心者はまず [Empty Views Activity] で勉強してから他のActivityを使うようにしたほうがいいんだと大変勉強になりました。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1