当我尝试从Api的上下文中检索字符串时,会得到ResourceNotFoundException吗?

时间:2019-01-16 09:47:21

标签: android kotlin

因此,我在API类上添加了一个上下文,该上下文可从Firebase检索数据。如果检索失败,我将返回从资源中获取的字符串。我只是想知道,假设片段或活动突然被破坏了。我不会收到ResourcesNotFoundException吗?

例如

我检索了数据>锁定了屏幕>检索失败>(可能出现ResourceNotFoundException)?

如果这是真的,那么可以在AndroidViewModel中创建一个StringFactory,然后使用applicationContext来检索String

仅完全返回观察者将收到的常量var,然后允许观察者访问Context即可从资源中获取我需要的字符串?

这是我下面的课程。

interface BaseApi<T> {

    val process: MutableLiveData<Response<T>>

}

class AccountApi(val context: Context, val store: FirebaseFirestore) : BaseApi<AccountDocument> {

    override val process: MutableLiveData<Response<AccountDocument>> = MutableLiveData()

    fun getAccountDocument(email: String): LiveData<Response<AccountDocument>> {

        val collection = store.collection("accounts")

        collection.document(email)
                .get()
                .addOnSuccessListener { task ->
                    process.value = Response<AccountDocument>(true).data(task.toObject(AccountDocument::class.java))
                }
                .addOnFailureListener {
                    process.value = Response<AccountDocument>(false).message(context.getString(R.string.account_does_not_exist))
                }

        return process
    }
}

data class Response<T>(
        val isSuccessful: Boolean = false
) {
    private var _message: String = ""
    private var _data: T? = null

    fun message(message: String): Response<T> {
        _message = message
        return this
    }

    fun getMessage() = _message

    fun data(data: T?): Response<T> {
        _data = data
        return this
    }

    fun getData() = _data

}

1 个答案:

答案 0 :(得分:0)

好吧,当您将字符串添加到与默认strings.xml文件不同的语言环境而忘记将其添加到默认strings.xml文件时,这是一个常见问题。 因此,当您使用默认语言环境时,该应用将无法查看该值,因为该值不在默认strings.xml