前提・実現したいこと
「はじめての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
回答1件
あなたの回答
tips
プレビュー