質問するログイン新規登録

回答編集履歴

4

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

2019/10/01 02:53

投稿

dodox86
dodox86

スコア9418

answer CHANGED
@@ -59,7 +59,7 @@
59
59
  editor.apply()
60
60
 
61
61
  // 保存できたことを確認してみる
62
- // デフォルト値を読み込まないよう、123, 456 をセットしてgetInt
62
+ // デフォルト値を取得していないことを確認するため、123, 456 をセットしてgetInt
63
63
  val hourTemp = pref.getInt("TOKEI_H", 123)
64
64
  val minuteTemp = pref.getInt("TOKEI_M", 456)
65
65
  Log.d("MyAlarmClock", "onTimeSet#2: saved: hour=$hourTemp, minute=$minuteTemp")

3

編集漏れ

2019/10/01 02:53

投稿

dodox86
dodox86

スコア9418

answer CHANGED
@@ -63,7 +63,6 @@
63
63
  val hourTemp = pref.getInt("TOKEI_H", 123)
64
64
  val minuteTemp = pref.getInt("TOKEI_M", 456)
65
65
  Log.d("MyAlarmClock", "onTimeSet#2: saved: hour=$hourTemp, minute=$minuteTemp")
66
- listener?.onSelected(hourOfDay, minute)
67
66
  }
68
67
 
69
68
  listener?.onSelected(hourOfDay, minute)

2

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

2019/10/01 02:51

投稿

dodox86
dodox86

スコア9418

answer CHANGED
@@ -63,8 +63,9 @@
63
63
  val hourTemp = pref.getInt("TOKEI_H", 123)
64
64
  val minuteTemp = pref.getInt("TOKEI_M", 456)
65
65
  Log.d("MyAlarmClock", "onTimeSet#2: saved: hour=$hourTemp, minute=$minuteTemp")
66
-
67
66
  listener?.onSelected(hourOfDay, minute)
68
67
  }
68
+
69
+ listener?.onSelected(hourOfDay, minute)
69
70
  }
70
71
  ```

1

保存の例を例示

2019/10/01 02:50

投稿

dodox86
dodox86

スコア9418

answer CHANGED
@@ -24,4 +24,47 @@
24
24
  }
25
25
  ```
26
26
 
27
- 尚、`Context`を使うべきか`Activity`を使うべきか実は少しデリケートな部分があるのですが、今回の例では大差無いと判断して `Activity`を使いました。気に留めておき、余裕ができたら改めて調べてみてください。
27
+ 尚、`Context`を使うべきか`Activity`を使うべきか実は少しデリケートな部分があるのですが、今回の例では大差無いと判断して `Activity`を使いました。気に留めておき、余裕ができたら改めて調べてみてください。
28
+
29
+ ---
30
+ **追記しました:2019-10-01 11:46**
31
+
32
+ `TimePickerDialog`の表示で[OK]ボタンを押したときに指定した時:分をもって`onTimeSet`が呼ばれるので、その時に`SharedPreferences`に保存するようにしたコードの例です。
33
+
34
+ ```Kotlin
35
+ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
36
+ val c = Calendar.getInstance()
37
+ var hour: Int = c.get(Calendar.HOUR_OF_DAY)
38
+ var minute: Int = c.get(Calendar.MINUTE)
39
+ val pref: SharedPreferences? =
40
+ activity?.getSharedPreferences("dataSave", Context.MODE_PRIVATE)
41
+ if (pref != null) {
42
+ val c = Calendar.getInstance()
43
+ hour = pref.getInt("TOKEI_H", hour)
44
+ minute = pref.getInt("TOKEI_M", minute)
45
+ Log.d("MyAlarmClock", "onCreateDialog#1: hour=$hour, minute=$minute")
46
+ }
47
+ return TimePickerDialog(context, this, hour, minute, true)
48
+ }
49
+
50
+ override fun onTimeSet(view: TimePicker?, hourOfDay: Int, minute: Int) {
51
+ Log.d("MyAlarmClock", "onTimeSet#1: hour=$hourOfDay, minute=$minute")
52
+
53
+ val pref: SharedPreferences? =
54
+ activity?.getSharedPreferences("dataSave", Context.MODE_PRIVATE)
55
+ if (pref != null) {
56
+ val editor = pref.edit()
57
+ editor.putInt("TOKEI_H", hourOfDay)
58
+ editor.putInt("TOKEI_M", minute)
59
+ editor.apply()
60
+
61
+ // 保存できたことを確認してみる
62
+ // デフォルトの値を読み込まないよう、123, 456 をセットしてgetInt
63
+ val hourTemp = pref.getInt("TOKEI_H", 123)
64
+ val minuteTemp = pref.getInt("TOKEI_M", 456)
65
+ Log.d("MyAlarmClock", "onTimeSet#2: saved: hour=$hourTemp, minute=$minuteTemp")
66
+
67
+ listener?.onSelected(hourOfDay, minute)
68
+ }
69
+ }
70
+ ```