AndroidStudioでMapViewを追加できない(Fragmentを追加すると遷移先でアプリが落ちる)

現在AndroidStudio勉強中の学生です。

実現したいこと

FABを押下後DetealActivityに飛びtitle、現在地の表示(Fragmentを使用),detealの入力をしてactivity_mainにList表示させたい(Listにはtitleのみの表示)のですが、Fragmentを挿入するとアプリが落ちてしまいます。
先にtitleとdetealは保存できるように作成したのですがやはりFragmentでアプリが落ちてしまいます。

ここに質問の内容を詳しく書いてください。
なぜFragmentが正しく表示されず落ちるのでしょうか

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

エラーメッセージはでていません

該当のソースコード

DetealActivity.kt

package com.example.testactivity
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast

import androidx.appcompat.app.AppCompatActivity
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions

class DetailsActivity : AppCompatActivity(), OnMapReadyCallback {

private lateinit var titleEditText: EditText private lateinit var detailsEditText: EditText private lateinit var registerButton: Button private lateinit var displayTextView: TextView private lateinit var dbHelper: SampleDatabaseHelper private var itemId: Long = 0 private lateinit var mMap: GoogleMap override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_details) titleEditText = findViewById(R.id.titleEditText) detailsEditText = findViewById(R.id.detailsEditText) registerButton = findViewById(R.id.registerButton) displayTextView = findViewById(R.id.displayTextView) dbHelper = SampleDatabaseHelper(this) val mapFragment = supportFragmentManager .findFragmentById(R.id.map) as SupportMapFragment mapFragment.getMapAsync(this) // 追加:Listをタップして遷移してきた場合、情報を表示する val id = intent.getIntExtra(EXTRA_ID, -1) if (id != -1) { val data = dbHelper.getAllData().find { it.id == id } titleEditText.setText(data?.title) detailsEditText.setText(data?.details) displayTextView.text = "Title: ${data?.title}\nDetails: ${data?.details}" } // 登録ボタンのクリックリスナー registerButton.setOnClickListener { val title = titleEditText.text.toString() val details = detailsEditText.text.toString() // データベースにデータを保存 dbHelper.insertData(title, details) // MainActivityにデータを返す val resultIntent = Intent() setResult(RESULT_OK, resultIntent) finish() } val deleteButton: Button = findViewById(R.id.deleteButton) deleteButton.setOnClickListener { onDeleteButtonClick(it) } itemId = intent.getLongExtra(SampleDatabaseHelper.DBContract.DBEntry.COLUMN_ID, 0) } override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap // Add a marker in Sydney and move the camera val sydney = LatLng(-34.0, 151.0) mMap.addMarker( MarkerOptions() .position(sydney) .title("Marker in Tokyo")) mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)) } fun onDeleteButtonClick(view: View) { // ここに削除処理を実装 val deleted = dbHelper.deleteData(itemId) Log.d("DetailsActivity", "itemId: $itemId") // ログ出力 Log.d("DetailsActivity", "Deleted: $deleted") if (deleted) { // 削除が成功した場合の処理 Toast.makeText(this, "削除しました", Toast.LENGTH_SHORT).show() finish() } else { // 削除が失敗した場合の処理 Toast.makeText(this, "削除に失敗しました", Toast.LENGTH_SHORT).show() } finish() } companion object { const val EXTRA_ID = "extra_id" const val DETAILS_ACTIVITY_REQUEST_CODE = 1 const val REQUEST_LOCATION_PERMISSION = 1001 }

}

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:map="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:padding="16dp"> <EditText android:id="@+id/titleEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Title"/> <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="464dp" tools:context=".MapsActivity" /> <EditText android:id="@+id/detailsEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Details" /> <Button android:id="@+id/registerButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Register"/> <TextView android:id="@+id/displayTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:text="" android:textSize="18sp" android:textStyle="bold"/> <Button android:id="@+id/deleteButton" android:layout_width="391dp" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:onClick="onDeleteButtonClick" android:text="削除" /> </LinearLayout>

activity_deteal.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:map="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:padding="16dp">

<EditText android:id="@+id/titleEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Title"/> <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="464dp" tools:context=".MapsActivity" /> <EditText android:id="@+id/detailsEditText" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Details" /> <Button android:id="@+id/registerButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Register"/> <TextView android:id="@+id/displayTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:text="" android:textSize="18sp" android:textStyle="bold"/> <Button android:id="@+id/deleteButton" android:layout_width="391dp" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:onClick="onDeleteButtonClick" android:text="削除" />

コメントを投稿

0 コメント