Как искать строку в строках Android. xml? - PullRequest
0 голосов
/ 10 июля 2020

Я попробовал этот ответ: Как искать содержимое строк, хранящихся в файле XML? :

companion object {
        val TAG: String = "EffectsDescription"
        fun fromStringsXml(string: String, context: Context): String {
            val ss = string.toLowerCase().replace(" ", "_");
            Log.d(TAG, "gonna search for " + ss);
            val s = searchForString(ss, context);
            Log.d(TAG, "found: " + s);
            return s ?: "ERROR"
        }

        private fun searchForString(message: String, context: Context): String? {
            return try {
                val resId: Int = context.resources.getIdentifier(message, "string", context.packageName)
                Resources.getSystem().getString(resId)
            } catch (e: Exception) {
                null
            }
        }
    }

и я звоню с Java вот так:

EffectDescription.Companion.fromStringsXml(effectOrCategory, MainActivity.this.getApplicationContext())

, но я получаю ERROR для всех переменных. Я регистрирую их, чтобы посмотреть, соответствуют ли они строкам в моем strings.xml, и они это делают. Например, у меня есть

<string name="distortion">Distortion</string>

, и там написано

gonna search for distortion
found: null

1 Ответ

0 голосов
/ 10 июля 2020

Фикс:

fun fromStringsXml(string: String, context: Context): String {
            val ss = string.toLowerCase().replace(" ", "_");
            Log.d(TAG, "gonna search for " + ss + " with packageName " + context.packageName);
            val s = searchForString(ss, context);
            Log.d(TAG, "found: " + s);
            return s ?: "ERROR"
        }

        private fun searchForString(message: String, context: Context): String? {
            return try {
                val resId: Int = context.resources.getIdentifier(message, "string", context.packageName)
                Log.d(TAG, "redID: $resId")
                context.resources.getString(resId)
            } catch (e: Exception) {
                null
            }
        }
...