🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Kotlin

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

Q&A

解決済

1回答

5708閲覧

Could not execute method for android:onClickというエラーが出て、アプリが強制終了して困っています

nishino.michiya

総合スコア14

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Kotlin

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

0グッド

0クリップ

投稿2021/02/25 12:34

前提・実現したいこと

「はじめてのAndroidプログラミング」という参考書をもとにスケジュールアプリを作成しております。
その中で、スケジュールを入力し、保存ボタンを押すと下記のエラーが起き、強制終了してしまいます。
そのため、実現したいことは、このエラーをなくすことです。

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

下から15行目のところにat com.example.myscheduler.ScheduleEditActivity.onSaveTapped(ScheduleEditActivity.java:43)
とあり、その行を見ても何がダメなのかわかりません。
また、エラー文の上のほうに
Could not execute method for android:onClick
とエラーが出ており、onClickのメソッドを実行できない理由が全然わからないので、どなたか教えていただけると助かります。お願いいたします。

2021-02-25 21:02:15.779 3395-3395/com.example.myscheduler E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myscheduler, PID: 3395 java.lang.IllegalStateException: Could not execute method for android:onClick at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:414) at android.view.View.performClick(View.java:6597) at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119) at android.view.View.performClickInternal(View.java:6574) at android.view.View.access$3100(View.java:778) at android.view.View$PerformClick.run(View.java:25885) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409) at android.view.View.performClick(View.java:6597)  at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)  at android.view.View.performClickInternal(View.java:6574)  at android.view.View.access$3100(View.java:778)  at android.view.View$PerformClick.run(View.java:25885)  at android.os.Handler.handleCallback(Handler.java:873)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:6669)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)  Caused by: io.realm.exceptions.RealmException: Running transactions on the UI thread has been disabled. It can be enabled by setting 'RealmConfiguration.Builder.allowWritesOnUiThread(true)'. at io.realm.BaseRealm.checkAllowWritesOnUiThread(BaseRealm.java:541) at io.realm.Realm.executeTransaction(Realm.java:1533) at com.example.myscheduler.ScheduleEditActivity.onSaveTapped(ScheduleEditActivity.java:43) at java.lang.reflect.Method.invoke(Native Method)  at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)  at android.view.View.performClick(View.java:6597)  at com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:1119)  at android.view.View.performClickInternal(View.java:6574)  at android.view.View.access$3100(View.java:778)  at android.view.View$PerformClick.run(View.java:25885)  at android.os.Handler.handleCallback(Handler.java:873)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:6669)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

該当のソースコード

ScheduleEditActivity.java

java

1package com.example.myscheduler; 2 3import android.os.Bundle; 4import android.view.View; 5import android.widget.EditText; 6import android.widget.Toast; 7 8import androidx.appcompat.app.AppCompatActivity; 9 10import java.text.ParseException; 11import java.text.SimpleDateFormat; 12import java.util.Date; 13 14import io.realm.Realm; 15 16public class ScheduleEditActivity extends AppCompatActivity { 17 18 private Realm mRealm; 19 EditText mDateEdit; 20 EditText mTitleEdit; 21 EditText mDetailEdit; 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_schedule_edit); 27 28 mRealm = Realm.getDefaultInstance(); 29 mDateEdit = (EditText)findViewById(R.id.editTextDate); 30 mTitleEdit = (EditText)findViewById(R.id.titleEdit); 31 mDetailEdit = (EditText)findViewById(R.id.detailEdit); 32 } 33 34 public void onSaveTapped(View view){ 35 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 36 Date dateParse = new Date(); 37 try { 38 dateParse = sdf.parse(mDateEdit.getText().toString()); 39 }catch (ParseException e){ 40 e.printStackTrace(); 41 } 42 final Date date = dateParse; 43 mRealm.executeTransaction(new Realm.Transaction() { 44 @Override 45 public void execute(Realm realm) { 46 Number maxId = realm.where(Schedule.class).max("id"); 47 long nextId = 0; 48 if (maxId != null) nextId = maxId.longValue() + 1; 49 Schedule schedule = realm.createObject(Schedule.class,new Long(nextId)); 50 51 schedule.setDate(date); 52 schedule.setTitle(mTitleEdit.getText().toString()); 53 schedule.setDetail(mDetailEdit.getText().toString()); 54 } 55 }); 56 Toast.makeText(this,"追加しました",Toast.LENGTH_SHORT).show(); 57 finish(); 58 } 59}

Schedule.java

java

1package com.example.myscheduler; 2 3import java.util.Date; 4 5import io.realm.RealmObject; 6import io.realm.annotations.PrimaryKey; 7 8public class Schedule extends RealmObject { 9 @PrimaryKey 10 private long id; 11 12 public long getId() { 13 return id; 14 } 15 16 public void setId(long id) { 17 this.id = id; 18 } 19 20 public Date getDate() { 21 return date; 22 } 23 24 public void setDate(Date date) { 25 this.date = date; 26 } 27 28 public String getTitle() { 29 return title; 30 } 31 32 public void setTitle(String title) { 33 this.title = title; 34 } 35 36 public String getDetail() { 37 return detail; 38 } 39 40 public void setDetail(String detail) { 41 this.detail = detail; 42 } 43 44 private Date date; 45 private String title; 46 private String detail; 47 48} 49

試したこと

参考書通りにやっているので、何がだめなのかわからずで何もしておりません。
しかし、Int型だったり、Sring型とかそこらへんが違っているのかなと思っていますが、どこを直せばいいのかわからずです。

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

Android Studio 4.1.2

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

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

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

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

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

nishino.michiya

2021/02/25 13:07

ご回答ありがとうございます。 確かに、頂いたものを見て変更したら確かにしっかりと動きました。 ありがとうございます。 Realmのバージョンを挙げてしまったのが、原因でした。 是非、ベストアンサーにしたいので、同じことを下のほうの回答欄のほうで言っていただけないでしょうか?お願いいたします。
hoshi-takanori

2021/02/25 13:29

私はリンクの紹介をしただけで、修正方法も複数あるようなので、実際に試してうまくいった方法をご自分で回答欄に書いて自己解決にしてください。
guest

回答1

0

自己解決

https://teratail.com/questions/309320
を見て解決できました。

投稿2021/09/15 05:26

nishino.michiya

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問