回答編集履歴
8
コード修正
test
CHANGED
@@ -23,13 +23,13 @@
|
|
23
23
|
|
24
24
|
class HomeFragment : Fragment() {
|
25
25
|
companion object {
|
26
|
-
//要らないものは
|
26
|
+
//要らないものは消しておく. パラメータは互換性のため.
|
27
27
|
fun newInstance(param1: String, param2: String) = HomeFragment()
|
28
|
+
|
29
|
+
private const val PREFERENCE = "preference_file" //リソースから取る程のものでもなさそう
|
30
|
+
private const val PREF_STATION1_NAME = "Station1Name"
|
31
|
+
private const val CLEAR_VALUE = "NoData"
|
28
32
|
}
|
29
|
-
|
30
|
-
private val PREFERENCE = "preference_file" //リソースから取る程のもの?
|
31
|
-
private val PREF_STATION1_NAME = "Station1Name"
|
32
|
-
private val CLEAR_VALUE = "NoData"
|
33
33
|
|
34
34
|
private var _binding: FragmentHomeBinding? = null
|
35
35
|
private val binding get() = _binding!!
|
@@ -51,7 +51,7 @@
|
|
51
51
|
|
52
52
|
//検索ボタンの処理
|
53
53
|
binding.searchbutton.setOnClickListener {
|
54
|
-
val searchstation
|
54
|
+
val searchstation = binding.stationsearch.getText().toString()
|
55
55
|
if(searchstation != ""){
|
56
56
|
//保存
|
57
57
|
sharedPref.edit().putString(PREF_STATION1_NAME, searchstation).apply() //Editor は随時取り出し
|
7
修正
test
CHANGED
@@ -1,9 +1,8 @@
|
|
1
|
-
~~SharedPreferences.Editor を commit() してみては。~~
|
2
|
-
|
3
|
-
そもそも
|
1
|
+
そもそも SharedPreference オブジェクト自体を得られてないのではないでしょうか。
|
4
2
|
|
5
3
|
>val sharedPref = getActivity()?.getSharedPreferences(
|
6
4
|
Fragment オブジェクトの生成時はまだ Activity とリンクしていませんので、 getActivity() は null を返します。
|
5
|
+
sharedPref が null なら editor も null になり、 putString も apply も実行されません。
|
7
6
|
|
8
7
|
>・ほかのfragmentに移動して戻ってきた後
|
9
8
|
>・バックグラウンドに行った後
|
6
追加
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
~~SharedPreferences.Editor を commit() してみては。~~
|
2
2
|
|
3
|
-
そもそも初期表示時に SharedPreference から取り込めてない
|
3
|
+
そもそも初期表示時に SharedPreference から取り込めてないのではないでしょうか。
|
4
4
|
|
5
5
|
>val sharedPref = getActivity()?.getSharedPreferences(
|
6
6
|
Fragment オブジェクトの生成時はまだ Activity とリンクしていませんので、 getActivity() は null を返します。
|
@@ -10,7 +10,10 @@
|
|
10
10
|
>・実行しているエミュレータをスリープにしてもう一度起動した後
|
11
11
|
は、 SharedPreference に保存・再生されたのでは無く、 Fragment 自体が残っていて、各 EditText や TextView の値が Fragment によって保存・再生されたのでは無いでしょうか。
|
12
12
|
|
13
|
+
**※こちらの環境により、パッケージを変えています**
|
13
14
|
```kotlin
|
15
|
+
package com.teratail.q_rdjw8xeirai92w
|
16
|
+
|
14
17
|
import android.content.Context
|
15
18
|
import android.os.Bundle
|
16
19
|
import android.view.LayoutInflater
|
5
追加
test
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
~~SharedPreferences.Editor を commit() してみては。~~
|
2
2
|
|
3
3
|
そもそも初期表示時に SharedPreference から取り込めてないんですね。
|
4
|
+
|
5
|
+
>val sharedPref = getActivity()?.getSharedPreferences(
|
4
|
-
Fragment の生成時はまだ Activity とリンクしていませんので、 getActivity() は null を返します。
|
6
|
+
Fragment オブジェクトの生成時はまだ Activity とリンクしていませんので、 getActivity() は null を返します。
|
5
7
|
|
6
8
|
>・ほかのfragmentに移動して戻ってきた後
|
7
9
|
>・バックグラウンドに行った後
|
4
追加
test
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
そもそも初期表示時に SharedPreference から取り込めてないんですね。
|
4
4
|
Fragment の生成時はまだ Activity とリンクしていませんので、 getActivity() は null を返します。
|
5
|
+
|
6
|
+
>・ほかのfragmentに移動して戻ってきた後
|
7
|
+
>・バックグラウンドに行った後
|
8
|
+
>・実行しているエミュレータをスリープにしてもう一度起動した後
|
9
|
+
は、 SharedPreference に保存・再生されたのでは無く、 Fragment 自体が残っていて、各 EditText や TextView の値が Fragment によって保存・再生されたのでは無いでしょうか。
|
5
10
|
|
6
11
|
```kotlin
|
7
12
|
import android.content.Context
|
3
追加
test
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
~~SharedPreferences.Editor を commit() してみては。~~
|
2
2
|
|
3
|
-
そもそも初期表示時に SharedPreference から取り込
|
3
|
+
そもそも初期表示時に SharedPreference から取り込めてないんですね。
|
4
|
+
Fragment の生成時はまだ Activity とリンクしていませんので、 getActivity() は null を返します。
|
4
5
|
|
5
6
|
```kotlin
|
6
7
|
import android.content.Context
|
2
コード追加
test
CHANGED
@@ -1,3 +1,65 @@
|
|
1
1
|
~~SharedPreferences.Editor を commit() してみては。~~
|
2
2
|
|
3
3
|
そもそも初期表示時に SharedPreference から取り込んでないんですね。
|
4
|
+
|
5
|
+
```kotlin
|
6
|
+
import android.content.Context
|
7
|
+
import android.os.Bundle
|
8
|
+
import android.view.LayoutInflater
|
9
|
+
import android.view.View
|
10
|
+
import android.view.ViewGroup
|
11
|
+
import androidx.fragment.app.Fragment
|
12
|
+
import com.teratail.q_rdjw8xeirai92w.databinding.FragmentHomeBinding
|
13
|
+
|
14
|
+
class HomeFragment : Fragment() {
|
15
|
+
companion object {
|
16
|
+
//要らないものはさっさと消しておく. パラメータも消したいが互換性のため.
|
17
|
+
fun newInstance(param1: String, param2: String) = HomeFragment()
|
18
|
+
}
|
19
|
+
|
20
|
+
private val PREFERENCE = "preference_file" //リソースから取る程のもの?
|
21
|
+
private val PREF_STATION1_NAME = "Station1Name"
|
22
|
+
private val CLEAR_VALUE = "NoData"
|
23
|
+
|
24
|
+
private var _binding: FragmentHomeBinding? = null
|
25
|
+
private val binding get() = _binding!!
|
26
|
+
|
27
|
+
//onCreateView は生成のみ
|
28
|
+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
29
|
+
_binding = FragmentHomeBinding.inflate(layoutInflater, container, false)
|
30
|
+
return binding.root
|
31
|
+
}
|
32
|
+
|
33
|
+
//それぞれの処理はこちらに
|
34
|
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
35
|
+
super.onViewCreated(view, savedInstanceState)
|
36
|
+
|
37
|
+
val sharedPref = requireActivity().getSharedPreferences(PREFERENCE, Context.MODE_PRIVATE)
|
38
|
+
|
39
|
+
//最期の設定値を取り込み(無ければ "NoData")
|
40
|
+
binding.station1.text = sharedPref.getString(PREF_STATION1_NAME, CLEAR_VALUE);
|
41
|
+
|
42
|
+
//検索ボタンの処理
|
43
|
+
binding.searchbutton.setOnClickListener {
|
44
|
+
val searchstation: String = binding.stationsearch.getText().toString()
|
45
|
+
if(searchstation != ""){
|
46
|
+
//保存
|
47
|
+
sharedPref.edit().putString(PREF_STATION1_NAME, searchstation).apply() //Editor は随時取り出し
|
48
|
+
binding.station1.text = searchstation
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
//削除ボタンの処理
|
53
|
+
binding.station1del.setOnClickListener {
|
54
|
+
//クリア
|
55
|
+
sharedPref.edit().remove(PREF_STATION1_NAME).apply()
|
56
|
+
binding.station1.text = CLEAR_VALUE
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
override fun onDestroyView() {
|
61
|
+
_binding = null
|
62
|
+
super.onDestroyView()
|
63
|
+
}
|
64
|
+
}
|
65
|
+
```
|
1
変更
test
CHANGED
@@ -1 +1,3 @@
|
|
1
|
-
SharedPreferences.Editor を commit() してみては。
|
1
|
+
~~SharedPreferences.Editor を commit() してみては。~~
|
2
|
+
|
3
|
+
そもそも初期表示時に SharedPreference から取り込んでないんですね。
|