Получу ли я ResourceNotFoundException при попытке извлечь строку из контекста в API? - PullRequest
0 голосов
/ 16 января 2019

Итак, я добавил в свой класс API контекст, который извлекает данные из Firebase. Если поиск не удается, я возвращаю строку, полученную из моих ресурсов. Мне просто интересно, скажем, фрагмент или деятельность была внезапно уничтожена. Не получу ли я исключение ResourcesNotFoundException?

* 1003 Е.Г. *

Я восстановил данные> Заблокировал экран> Сбой при получении> (возможное исключение ResourceNotFoundException)?

Если это так, тогда было бы хорошо создать StringFactory в AndroidViewModel и использовать applicationContext для получения String

или

Просто полностью вернуть постоянную переменную, которую получит наблюдатель, и затем позволить наблюдателю получить доступ к контексту, чтобы получить нужную мне строку из ресурсов?

Вот мои занятия ниже.

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 голосов
/ 16 января 2019

Что ж, это распространенная проблема, когда вы добавляете строку в локаль, отличную от файла strings.xml по умолчанию, и забываете добавить ее в файл strings.xml по умолчанию. Поэтому, когда вы находитесь в локали по умолчанию, приложение не сможет увидеть значение, потому что оно не находится внутри значения по умолчанию strings.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...