2017-02-22 4 views
0

Недавно я обнаружил, что android.R.string содержит несколько полезных локализованные строки, как «OK», «Да», «Нет», и они доступны в Java код с getResources().getString(android.R.string.yes)строка доступа к ресурсам Android SDK

Но Android SDK содержит много более локализованные строки. Они расположены в $ANDROID_HOME/platforms/android-25/data/res/values-$LANG/string.xml

К примеру, я хочу использовать следующую строку

<string name="gpsNotifTicker">Location request from <xliff:g id="name">%s</xliff:g></string> 

Есть Есть ли способ сделать это, кроме копирования и вставки строки из каждого файла?

android:text="@android:string/gpsNotifTicker" в XML дает мне «ресурс не является публичной» Ошибка

getString(android.R.string.gpsNotifTicker, name) в Java дает мне «Нерешенные ссылка»

Кроме того, я пытался добавить SDk ресурсы для наборов исходных в build.gradle

android { 
//..... 
    sourceSets { 
     main.java.srcDirs += 'src/main/kotlin' 
     main.resources.srcDirs += '/Users/rostopira/Library/Android/sdk/platforms/android-25/data/res' 
    } 
} 

Но струны до сих пор не доступны

ответ

0

Вы можете ссылающихся системные ресурсы с @android спецификатор:

android:text="@android:string/SOME_RESOURCE" 
+0

Это не работает с примером. Работает только для простых строк, таких как «Да» и «Нет». Кроме того, мне нужна эта строка в коде Java –

+0

Я думаю, что это просто автозаполнение не работает. В противном случае, если вы напишете вручную, это не приведет вас к ошибке. [См. Снимок экрана] (http://i.imgur.com/qwUpDpE.png) – azizbekian

+0

Я пробовал. Он говорит, что ресурс @android: string/gpsNotifTicker не является общедоступным. –