2015-09-10 3 views
0

В основном мне нужно создавать ресурсы строки выделения, а иногда и для локали, нет доступных доступных ресурсов строки. Есть ли способ получить строку или null, если она не найдена? Я не хочу, чтобы сделать примерочный поймать каждый раз, когда он отсутствуетИзбегайте использования ресурсов.NotFoundException в Android

try { 
    valuesForLocale.put(key, res.getString(key.id)); 
} catch (Resources.NotFoundException e) { 
       //Ignore 
} 

Есть ли что-нибудь подобное getStringOrNull()?

ответ

1

Вы можете использовать метод getIdentifier. Код без примерки улова будет выглядеть:

int stringId = context.getResources().getIdentifier("my_resource_name", "string", mContext.getPackageName()); 

String text = (stringId != 0) ? context.getString(stringId) : ""; 
+0

Я думаю, что будет еще хуже, производительностью мудрой, чем игнорирование исключения – Heisenberg

+0

я не уверен в этом. Resource.getIdentifier() использует метод AssetManager.getResourceIdentifier(). Если мы посмотрим на исходный код Android, мы увидим, что это собственный метод. По крайней мере, это не использует отражение) –

Смежные вопросы