回答編集履歴
1
追記
answer
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
リンクにあるように、```Application``` クラスを作成して、そこから ```context``` を取得しても良いかと思います。
|
2
2
|
|
3
|
-
また、```Fragment``` から ```context``` を参照する場合は、```onAttach(context: Context)``` で取得できた ```context``` を変数に割り当てて参照しても良いかと思います。
|
3
|
+
また、```Fragment``` から ```context``` を参照する場合は、```onAttach(context: Context)``` で取得できた ```context``` を変数に割り当てて参照しても良いかと思います。
|
4
4
|
|
5
|
+
( kakajika さんのご指摘を受け追記 ) ```Fragment``` クラスでは、 ```getContext```、```requireContext()``` メソッドがあるので、それらで ```context``` を取得することも可能です。
|
6
|
+
また、```onAttach()``` で ```context``` を取得した際は、メモリリークを回避するために、 ```onDetach()``` で解放する必要があります。
|
7
|
+
|
8
|
+
|
5
9
|
```Kotlin
|
6
10
|
class YourFragment : BaseFragment() {
|
7
11
|
|
8
|
-
|
12
|
+
var mContext: Context? = null
|
9
13
|
|
10
14
|
override fun onAttach(context: Context) {
|
11
15
|
super.onAttach(context)
|
@@ -17,5 +21,10 @@
|
|
17
21
|
mContext.doSomething()
|
18
22
|
}
|
19
23
|
|
24
|
+
override fun onDetach() {
|
25
|
+
context = null
|
26
|
+
super.onDetach()
|
27
|
+
}
|
28
|
+
|
20
29
|
}
|
21
30
|
```
|