回答編集履歴

1

追記

2019/08/22 03:40

投稿

s.m_1
s.m_1

スコア293

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
- lateinit var mContext: Context
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
  ```