nsaito92 / Frock

0 stars 0 forks source link

トップ画面にDBのアラーム設定表示機能を追加 #14

Closed nsaito92 closed 4 years ago

nsaito92 commented 4 years ago

概要

期待値

  1. 【done】トップ画面から、DBのアラーム設定編集機能作成
  2. 【done】トップから項目長押しで、削除機能削除を追加
  3. 【done】アラーム設定の新規作成機能を追加
  4. 【done】アラーム設定新規作成のバリデーション機能を追加
  5. 【done】DB保存時、ホーム画面に戻る処理を追加。
  6. 【done】SQLエラーの修正

対応内容

構成の概要

実装概要

対応順

  1. Adapterクラスを新規作成
  2. DB読み込み処理を追加
  3. アダプタを使用して、getView時の処理
  4. DBのデータをビューに表示する際の整形処理

参考情報

参考情報

備考

*

nsaito92 commented 4 years ago

Androidのリスト表示について調査

「3. TOP画面にて、DBのデータを元に現在のアラーム設定の一覧を表示できる様にする。」について検討。

関連機能

備考

参考ページ

nsaito92 commented 4 years ago

DBリークの件

以下も修正する。

05-25 22:41:51.753 23223-23232/org.bitbucket.snaoto22.frock W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/org.bitbucket.snaoto22.frock/databases/AppSettingsDB.db' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
05-25 22:41:51.753 23223-23232 / org.bitbucket.snaoto22.frock W / SQLiteConnectionPool:データベース '/data/user/0/org.bitbucket.snaoto22.frock/databases/AppSettingsDB.db'のSQLiteConnectionオブジェクト 流出しました! 進行中のトランザクションを適切に終了し、不要になったデータベースを閉じるようにアプリケーションを修正してください。

なぜ表示されているか

対応方法

nsaito92 commented 4 years ago
05-20 00:41:23.126 3446-3446/org.bitbucket.snaoto22.frock E/AndroidRuntime: FATAL EXCEPTION: main
                                                                            Process: org.bitbucket.snaoto22.frock, PID: 3446
                                                                            java.lang.RuntimeException: Unable to start activity ComponentInfo{org.bitbucket.snaoto22.frock/com.example.naotosaito.clocktest.AlarmPreferenceActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2711)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2772)
                                                                                at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1515)
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                at android.os.Looper.loop(Looper.java:241)
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6223)
                                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
                                                                             Caused by: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
                                                                                at android.database.AbstractCursor.checkPosition(AbstractCursor.java:460)
                                                                                at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
                                                                                at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:68)
                                                                                at com.example.naotosaito.clocktest.FrockSettingsHelperController.getAlarmSettingEntity(FrockSettingsHelperController.java:164)
                                                                                at com.example.naotosaito.clocktest.AlarmPreferenceActivity.onCreate(AlarmPreferenceActivity.java:67)
                                                                                at android.app.Activity.performCreate(Activity.java:6705)
                                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2664)
                                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2772) 
                                                                                at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1515) 
                                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                at android.os.Looper.loop(Looper.java:241) 
                                                                                at android.app.ActivityThread.main(ActivityThread.java:6223) 
                                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
05-20 00:41:28.923 3446-3467/org.bitbucket.snaoto22.frock W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/org.bitbucket.snaoto22.frock/databases/AppSettingsDB.db' was leaked!  Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.

DBからデータを削除したので、列が削除されている。 アダプタのポジションと状態が一致していないため、データが無しとなりクラッシュしている。

sqlite> select _id, status, hour, minute, week from alarmsettingsdb;
1|1|0|20|3,4,5,6
3|1|0|15|0,1,2
4|1|0|22|
5|1|0|0|
sqlite> 

修正したこと

nsaito92 commented 4 years ago

リスト表示の項目が選択された際の処理 対応メモ

シーケンスメモ

  1. ユーザーに選択された項目の検知
  2. 選択していた項目のデータをIntentのパラメーターとしてセット
  3. アラーム設定画面へのIntent発行
  4. 渡された情報を元に、アラーム設定画面を表示。

備考

nsaito92 commented 4 years ago

バリデーション対応 対応メモ

対応方針

対応方法

備考

nsaito92 commented 4 years ago

対応完了、これ以降は障害チケットで対応。