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

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

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

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

Q&A

解決済

1回答

753閲覧

setOnClickListenerの箇所で強制終了してしまいます。起動しないのでデバックもできません。

takahasi

総合スコア11

Kotlin

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

0グッド

0クリップ

投稿2020/06/21 10:43

前提・実現したいこと

kotlinでメモ帳を作っています。
id:yyyyyのButtonをクリックするとEdit.ktファイルが呼ばれて、編集画面が表示されるようにしたいです。

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

actionadd.setOnClickListener {
val intent = Intent(application, Edit::class.java)
startActivity(intent)
}
上記の部分を実行するとアプリが強制終了されてしまします。

強制終了される理由を教えて下さい。

該当のソースコード

MainActivity.kt
package com.example.memoapps
import android.app.VoiceInteractor
import android.content.ClipData
import android.content.Intent
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.ButtonBarLayout
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
getMenuInflater().inflate(R.menu.menu_main, menu);
val actionadd = findViewById<Button>(R.id.yyyyy)
//actionadd.setOnClickListener {
val intent = Intent(application, Edit::class.java)
startActivity(intent)
//}
return true;
}
}

Edit.kt
package com.example.memoapps
import android.os.Bundle
import android.view.Menu
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class Edit : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.edit)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
getMenuInflater().inflate(R.menu.delete, menu)
return true
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFD5D5D5" tools:context=".MainActivity">
<ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FFE3E3E3" android:divider="#FFD5D5D5" android:dividerHeight="8dp" >

<Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> </ListView> </RelativeLayout>

edit.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="5dp" android:orientation="vertical">
<EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:ems="10" android:hint="@string/title" android:importantForAutofill="no" android:inputType="textPersonName" android:textSize="24sp" />

<EditText android:id="@+id/editText3" android:layout_width="match_parent" android:layout_height="wrap_content" android:autofillHints="" android:ems="10" android:hint="@string/contents" android:inputType="textPersonName" android:textSize="14sp" />
</LinearLayout>

delete.xml

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:id="@+id/action_del" android:orderInCategory="1" android:title="@string/action_delete" android:icon="@android:drawable/ic_menu_delete" app:showAsAction="always" /> </menu>

menu_main.xml

<?xml version="1.0" encoding="utf-8"?> <menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:id="@+id/yyyyy" android:checkable="true" android:enabled="true" android:icon="@android:drawable/ic_input_add" android:orderInCategory="1" android:title="@string/add" android:visible="true" app:showAsAction="always" /> </menu>

試したこと

actionadd.setOnClickListener {
上記の部分をコメントアウトすると、正しく編集画面が表示されるので、編集画面呼び出し部分に問題があるわけではないようです。

補足情報(FW/ツールのバージョンなど)

Android API 26
ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

とりあえず「動かす」ことだけを考えたら、いくつかの修正でできそうです。

MainActivity.kt
OptionsMenuの操作によって行われる処理を記述するならば、onOptionsItemSelected()を実装しましょう。

kotlin

1class MainActivity : AppCompatActivity() { 2 3 override fun onCreate(savedInstanceState: Bundle?) { 4 super.onCreate(savedInstanceState) 5 //setContentView(R.layout.activity_main) 6 7/* 8 val actionadd = findViewById<Button>(R.id.yyyyy) 9 actionadd.setOnClickListener { 10 val intent = Intent(application, Edit::class.java) 11 startActivity(intent) 12 } 13*/ 14 } 15 16 override fun onCreateOptionsMenu(menu: Menu?): Boolean { 17 menuInflater.inflate(R.menu.menu_main, menu) 18 return true 19 } 20 21 override fun onOptionsItemSelected(item: MenuItem): Boolean { 22 if (item.itemId == R.id.yyyyy) { 23 val intent = Intent(application, Edit::class.java) 24 startActivity(intent) 25 return true 26 } 27 28 return super.onOptionsItemSelected(item) 29 } 30}

delete.xml

<menu>の要素には<item>を用いましょう。 ```xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_del" android:icon="@android:drawable/ic_menu_delete" android:orderInCategory="1" android:title="@string/action_delete" app:showAsAction="always" /> </menu> ```

menu_main.xml
delete.xmlと同じく。

xml

1<?xml version="1.0" encoding="utf-8"?> 2<menu xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto"> 4 <item 5 android:id="@+id/yyyyy" 6 android:checkable="true" 7 android:enabled="true" 8 android:icon="@android:drawable/ic_input_add" 9 android:orderInCategory="1" 10 android:title="@string/add" 11 android:visible="true" 12 app:showAsAction="always" /> 13</menu>

ただ、これで動かせるようになっても、activity_main.xmlのListView部分の記述には問題があるので、setContentViewでactivity_main.xmlを描画しようとすると、このままではやはりアプリは落ちます。その辺りはどうしたかったのか意図がわからないので省略していますが、もう少しお調べになる必要があるのでは。

投稿2020/06/21 14:19

keicha_hrs

総合スコア6768

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

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

takahasi

2020/06/22 12:23

ありがとうございました。解決できました。不勉強でした。努力します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問