startActivity(intent)で画面遷移できず沼りまくったのでメモ
Android 超初心者が画面遷移で沼ったので忘備録
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3694057%2F84fff2d1-4dd2-983f-c42a-d6d0af9bc37f.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=2f54e39ed5c326c4685c7e4f378beadc)
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] で作っていた。
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F3694057%2Feffc5411-a67c-1a07-9574-5a9cfb5c882a.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=c5cecb99775be1707b1810e255082b85)
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を使うようにしたほうがいいんだと大変勉強になりました。