回答編集履歴

4

コード中の不適切なコメント修正

2019/10/01 02:53

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -120,7 +120,7 @@
120
120
 
121
121
  // 保存できたことを確認してみる
122
122
 
123
- // デフォルト値を読み込まないよう、123, 456 をセットしてgetInt
123
+ // デフォルト値を取得していないことを確認するため、123, 456 をセットしてgetInt
124
124
 
125
125
  val hourTemp = pref.getInt("TOKEI_H", 123)
126
126
 

3

編集漏れ

2019/10/01 02:53

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -128,8 +128,6 @@
128
128
 
129
129
  Log.d("MyAlarmClock", "onTimeSet#2: saved: hour=$hourTemp, minute=$minuteTemp")
130
130
 
131
- listener?.onSelected(hourOfDay, minute)
132
-
133
131
  }
134
132
 
135
133
 

2

onTimeSetメソッドのコードを一部修正

2019/10/01 02:51

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -128,12 +128,14 @@
128
128
 
129
129
  Log.d("MyAlarmClock", "onTimeSet#2: saved: hour=$hourTemp, minute=$minuteTemp")
130
130
 
131
-
132
-
133
131
  listener?.onSelected(hourOfDay, minute)
134
132
 
135
133
  }
136
134
 
135
+
136
+
137
+ listener?.onSelected(hourOfDay, minute)
138
+
137
139
  }
138
140
 
139
141
  ```

1

保存の例を例示

2019/10/01 02:50

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -51,3 +51,89 @@
51
51
 
52
52
 
53
53
  尚、`Context`を使うべきか`Activity`を使うべきか実は少しデリケートな部分があるのですが、今回の例では大差無いと判断して `Activity`を使いました。気に留めておき、余裕ができたら改めて調べてみてください。
54
+
55
+
56
+
57
+ ---
58
+
59
+ **追記しました:2019-10-01 11:46**
60
+
61
+
62
+
63
+ `TimePickerDialog`の表示で[OK]ボタンを押したときに指定した時:分をもって`onTimeSet`が呼ばれるので、その時に`SharedPreferences`に保存するようにしたコードの例です。
64
+
65
+
66
+
67
+ ```Kotlin
68
+
69
+ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
70
+
71
+ val c = Calendar.getInstance()
72
+
73
+ var hour: Int = c.get(Calendar.HOUR_OF_DAY)
74
+
75
+ var minute: Int = c.get(Calendar.MINUTE)
76
+
77
+ val pref: SharedPreferences? =
78
+
79
+ activity?.getSharedPreferences("dataSave", Context.MODE_PRIVATE)
80
+
81
+ if (pref != null) {
82
+
83
+ val c = Calendar.getInstance()
84
+
85
+ hour = pref.getInt("TOKEI_H", hour)
86
+
87
+ minute = pref.getInt("TOKEI_M", minute)
88
+
89
+ Log.d("MyAlarmClock", "onCreateDialog#1: hour=$hour, minute=$minute")
90
+
91
+ }
92
+
93
+ return TimePickerDialog(context, this, hour, minute, true)
94
+
95
+ }
96
+
97
+
98
+
99
+ override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) {
100
+
101
+ Log.d("MyAlarmClock", "onTimeSet#1: hour=$hourOfDay, minute=$minute")
102
+
103
+
104
+
105
+ val pref: SharedPreferences? =
106
+
107
+ activity?.getSharedPreferences("dataSave", Context.MODE_PRIVATE)
108
+
109
+ if (pref != null) {
110
+
111
+ val editor = pref.edit()
112
+
113
+ editor.putInt("TOKEI_H", hourOfDay)
114
+
115
+ editor.putInt("TOKEI_M", minute)
116
+
117
+ editor.apply()
118
+
119
+
120
+
121
+ // 保存できたことを確認してみる
122
+
123
+ // デフォルトの値を読み込まないよう、123, 456 をセットしてgetInt
124
+
125
+ val hourTemp = pref.getInt("TOKEI_H", 123)
126
+
127
+ val minuteTemp = pref.getInt("TOKEI_M", 456)
128
+
129
+ Log.d("MyAlarmClock", "onTimeSet#2: saved: hour=$hourTemp, minute=$minuteTemp")
130
+
131
+
132
+
133
+ listener?.onSelected(hourOfDay, minute)
134
+
135
+ }
136
+
137
+ }
138
+
139
+ ```