字符串中的 Android Kotlin NullPointerException
Posted
技术标签:
【中文标题】字符串中的 Android Kotlin NullPointerException【英文标题】:Android Kotlin NullPointerException in Strings 【发布时间】:2022-01-19 08:48:40 【问题描述】:我正在制作一个应用程序,在这个应用程序中,我在 strings.xml 文件中写入了国家名称。我想在我的 Utils 类中获取这些国家/地区名称,但我无法获取这些字符串。如果你能帮忙,我会很高兴。我的代码如下:
class Utils
private var resources: Resources? = null
private val utils = resources!!
fun getAsiaCountriesFlags(): MutableList<Flag>
return mutableListOf(
Flag(
R.drawable.asia_turkey,
listOf(
utils.getString(R.string.asia_armenia),
utils.getString(R.string.asia_iran),
utils.getString(R.string.asia_turkey),
utils.getString(R.string.asia_azerbaijan)
),
utils.getString(R.string.asia_turkey)
)
)
private val utils = 资源!!它在这条线上给了我一个错误。我得到的错误是这样的:
Process: com.example.flagquizapp, PID: 8949
java.lang.NullPointerException
at com.example.flagquizapp.util.Utils.<init>(Utils.kt:10)
【问题讨论】:
您已经声明了可以为空的属性资源,并且您试图从该属性访问资源或上下文,而它无权访问它。您的 Utils 类不支持内容或资源。因此,请使用函数 getAsiaCountriesFlags( ) 来使用参数,例如 getAsiaCountriesFlags(resources: Resources) 。resources
为空,因为您从未初始化它。
如何初始化它? @ADM
【参考方案1】:
**Before**
<string-array name="country_array">
<item>asia_armenia</item>
<item>asia_iran</item>
<item>asia_turkey</item>
<item>asia_azerbaijan</item>
<item>asia_turkey</item>
</string-array>
**Create res--> Array.xml**
**After**
var categories: Array<String?>
categories=getResources().getStringArray(R.array.vehiclescategory_array);
【讨论】:
【参考方案2】:您的resources
对象未初始化,因此您应该在类构造函数或方法中获取它
在类构造函数中
class Utils(private val resources: Resources)
fun getAsiaCountriesFlags(): MutableList<Flag>
...
在方法中
class Utils
fun getAsiaCountriesFlags(resources: Resources): MutableList<Flag>
...
【讨论】:
以上是关于字符串中的 Android Kotlin NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章
null 不能转换为非 null 类型 android.support.v4.view.ViewPager - KOTLIN
Android Kotlin 反射使用 (null receiver 异常问题)
希望对Android应用中的Kotlin非空断言错误进行解释。
Android Kotlin:null 不能转换为非 null 类型 com.android.app.ui.category.CategoryAdapter.ViewHolder 想要在 recycl