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

回答編集履歴

2

修正

2018/09/07 11:44

投稿

keicha_hrs
keicha_hrs

スコア6768

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  SharedPreferencesではXMLファイルに情報が記録されます。getSharedPreferences()の第1引数に記述した文字列がXMLファイルの名前になります。この例で言えば、button.xmlというファイル名になります。初回起動でファイルが存在しないときは自動的に生成され、2回目以降の実行ではそのファイルが読み込まれますので、「実行する度にXMLファイルが作られる」ということはありません。
4
4
 
5
- ただし、ご提示いただいたコードのようにフィールドで初期値を代入しようとするとエラーでアプリが落ちてしまうので、
5
+ ただし、ご提示いただいたコードのように宣言して初期値を代入しようとするとエラーでアプリが落ちてしまうので、
6
6
 
7
7
  ```kotlin
8
8
  private lateinit var sharedPreferences: SharedPreferences

1

修正

2018/09/07 11:44

投稿

keicha_hrs
keicha_hrs

スコア6768

answer CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  override fun onCreate(savedInstanceState: Bundle?) {
11
11
  sharedPreferences = getSharedPreferences("button", Context.MODE_PRIVATE)
12
- val editor = sharedPreferences.edit()
12
+
13
13
  }
14
14
 
15
15
  ```
@@ -23,7 +23,7 @@
23
23
  val buttontf = sharedPreferences.getBoolean("togglebutton", false)
24
24
  ```
25
25
 
26
- とすれば、togglebuttonというキーによるboolean値がbutton.xmlに存在しなければ(ファイルが新規作成されたときも同様)、変数buttontfにはfalseが返ります。ただ、booleanでは「初回起動かどうか」を判断するのは難しいですね。初回起動か判断する必要あれば、例えばintでアプリでは使用することのない値を初期値すれば判別可能でしょう。
26
+ とすれば、togglebuttonというキーによるboolean値がbutton.xmlに存在しなければ(ファイルが新規作成されたときも同様)、変数buttontfにはfalseが返ります。ただ、booleanでは「初回起動かどうか」を判断するのは難しいですね。初回起動か判断する必要あれば、例えばintでアプリでは使用することのない値を初期値すれば判別可能でしょう。
27
27
 
28
28
  まとめれば、だいたいこんな感じにすれば最低限の動作確認はできるのでは?
29
29