Android getString() возвращает неправильную строку

Я столкнулся с проблемой, что getString() возвращает не строку идентификатора, а другую строку. Но сначала вот мой код:

public public class ShopFragment extends Fragment {
    ...
    public class ShopManager(){
        ...
        private TableRow[] getRowsFromItems(){
        ...
        TextView headlineName = new TextView(getContext());
        headlineName.setText(getString(R.string.shop_headline_name));
        TextView headlinePrice = new TextView(getContext());
        headlinePrice.setText(getString(R.string.shop_headline_price));
        ...
        }
    }
}

строки.xml:

<resources>
    ...
    <string name="show_leaderboards">Leaderboards</string>
    <string name="show_achievements">Achievements</string>
    ...
    <string name="shop_headline_name">Article</string>
    <string name="shop_headline_price">Price</string>
    ...
</resources>

Проблема в том, что getString(R.string.shop_headline_name) возвращает "Достижения", а getString(R.string.shop_headline_price) возвращает "Списки лидеров". Я понятия не имею, как это исправить, и я совершенно не понимаю, почему это происходит. Что я делаю не так? Спасибо за ваши ответы


person cmtut    schedule 14.07.2016    source источник
comment
Очистите проект (например, Build > Clean Project в Android Studio) и посмотрите, поможет ли это.   -  person CommonsWare    schedule 14.07.2016
comment
Если у вас включен мгновенный запуск, это может быть причиной. Это все еще сломанная штука, не используйте ее!   -  person Sufian    schedule 24.07.2016


Ответы (2)


Чистота и сборка должны помочь. Ваш R.java, который содержит все идентификаторы, не был сгенерирован должным образом. Очистка и сборка сгенерируют его правильно.

person Tony    schedule 14.07.2016

Чтобы использовать вашу строку из папки ресурсов (здесь strings.xml), используйте этот код:

headlineName.setText(getResources().getString(R.string.shop_headline_name));

Это должно работать.

person Somendra Meena    schedule 14.07.2016
comment
getString(int resId) внутренне реализует getResources().getString(resId). Следовательно, нет необходимости в getResource() - person Tony; 14.07.2016