Как избежать жестко закодированных строк в действии при вводе для представления переработчика? - PullRequest
0 голосов
/ 18 июня 2019

Я работаю с recycler view и при вставке текста типа String в представление переработчика я использую все жестко закодированные строки и думаю, что это может вызвать проблемы при переводе на другие языки.

Я пытался удалить строку.Например, я удалил «о нас» и сохранил R.string.about_us.Тем не менее, он показал ошибку.

 wordList.add(new Word(R.drawable.ic_launcher_background, R.string.about_us));
 wordList.add(new Word(R.drawable.ic_launcher_background, "Our Facebook Page"));
 wordList.add(new Word(R.drawable.ic_launcher_background, "About Us"));

Ответы [ 6 ]

2 голосов
/ 18 июня 2019

Вы не можете получить прямой доступ к строке string.xml, если вам нужно getResource().Вот пример

getResources().getString(R.string.about_us);

Ваш код должен выглядеть так:

wordList.add(new Word(R.drawable.ic_launcher_background, getActivity().getResources().getString(R.string.about_us)));
wordList.add(new Word(R.drawable.ic_launcher_background, "Our Facebook Page"));
wordList.add(new Word(R.drawable.ic_launcher_background, "About Us"));
1 голос
/ 18 июня 2019

Это сработало!

wordList.add(new Word(R.drawable.ic_launcher_background, getString(R.string.about_us)));
wordList.add(new Word(R.drawable.ic_launcher_background, getString(R.string.meme_bazar)));
0 голосов
/ 20 июня 2019

Вам необходимо изменить свой код, как показано ниже:

    wordList.add(new Word(R.drawable.ic_launcher_background, 
    getActivity().getString(R.string.about_us));

    wordList.add(new Word(R.drawable.ic_launcher_background, 
    getActivity().getString(R.string.our_facebook_page));   
    //our_facebook_page = "Our Facebook Page"

    wordList.add(new Word(R.drawable.ic_launcher_background, 
    getActivity().getString(R.string.about_us));   
    //about_us ="About Us"

Вы также должны поставить галочку следующим образом:

getActivity() != null 

перед выполнением вышеуказанного кода, чтобы предотвратить знаменитую NullPointerException.

0 голосов
/ 18 июня 2019

для использования,

wordList.add(new Word(getResources().getDrawable(R.drawable.ic_launcher_background), getResource().getString(R.string.about_us)));

Для использования фрагмента или адаптера,

wordList.add(new Word(context.getResources().getDrawable(R.drawable.ic_launcher_background), context.getResource().getString(R.string.about_us)));
0 голосов
/ 18 июня 2019

Вам нужно чаще использовать диалоговое окно значений, в вашем случае это поле для полей String.Там вы можете использовать «Новый ресурс», где вы вводите его идентификатор и значение одновременно.Затем вы устанавливаете интерфейс, который поможет вам выполнить переводы.

0 голосов
/ 18 июня 2019

Вы не сказали, что получили ошибку, но вам нужно получить строку, вызвав getString, сделайте это так:

wordList.add(new Word(R.drawable.ic_launcher_background, context.getString(R.string.about_us)));

wordList.add(new Word(R.drawable.ic_launcher_background, "Our Facebook Page"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...