Kotlin言語にて開発中、どうしても進めない部分がありますので、質問させてください。
実現したいこと
下記xmlのような文字列アレイがあり、フラグメント内のKotlinコードで文字配列を読み込ませていました。
xml
1 <string-array name="a00_namelist1"> 2 <item>文字列1</item> 3 <item>文字列2</item> 4 <item>文字列3</item> 5 </string-array>
Kotlin
1class fragment: Fragment() { 2 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 3 super.onViewCreated(view, savedInstanceState) 4 //・・・・・ 5 val nameList = resources.getStringArray(R.array.a00_namelist1)//文字配列の読み込み。実際のコードではこの文章が大量にあるため、今後の修正を考えるとクラス分けし、メソッドを作りたいと考えた。 6 //・・・・・ 7 } 8}
実際のコードでは文字配列の読み込みが大量にあるため、今後の修正を考え、クラス分けし、メソッドを作りたいと考えました。
問題点
しかし、クラス分けをしたところ、「resources.〜」以降が使用できず、文字配列が読み込めなくなってしまいました。
Kotlin
1class FormulaData{ 2 fun formula_dataRead(homeId: String, categoryId: String): Array<String> { 3 return resources.getStringArray(R.array.a00_namelist1)//ここでエラー 4 } 5}
試していること
Application()クラスを継承させることでエラー自体は出なくなりました。
Kotlin
1class FormulaData:Application(){ 2 fun formula_dataRead(homeId: String, categoryId: String): Array<String> { 3 return resources.getStringArray(R.array.a00_namelist1)//ここのエラーはなくなった。しかし、ここでアプリクラッシュ。 4 } 5}
しかし今度はアプリが上記コード実行時にクラッシュするようになりました。
エラー内容は、下記のとおりです。
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
nullによるアプリクラッシュは「context」というキーワードに原因があると考え、調べているのですが、サイト等を調べても理解不足からかうまく自分のコードに落とし込むことが出来ず、開発が停滞してしまっている状況です。
ご教授頂ければ幸いです。
環境
Android Studio 4.0.1
Build #AI-193.6911.18.40.6626763, built on June 25, 2020
Runtime version: 1.8.0_242-release-1644-b3-6222593 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.15.6
GC: ParNew, ConcurrentMarkSweep
Memory: 2014M
Cores: 4
Registry: ide.new.welcome.screen.force=true
Non-Bundled Plugins: org.jetbrains.kotlin, com.google.services.firebase
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/06 13:00