Android обращение к ресурсам из адаптера

87
12 июня 2021, 18:50

Здравстуйте, уважаемые кодеры и программисты имеется следующий адаптер для ViewPager и Tablayout, и значения заголовков берутся из массива, но т.к. моё приложение поддерживает много языков я хочу задать элементы массива через String ресурсы, однако через адаптер обратиться к ним не получается, подскажите пожалуйста как это сделать? Зараннее спасибо!

 public class TabsPagerFragmentAdapter extends FragmentPagerAdapter {
        private String[] tabs;
        public TabsPagerFragmentAdapter(@NonNull FragmentManager fm) {
            super(fm);
            tabs = new String[] {
                    "Старт",
                    "Начало работы",
                    "Подключение"
            };
        }
        @NonNull
        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return Fragment1.getInstance();
                case 1:
                    return Fragment2.getInstance();
                case 2:
                    return Fragment3.getInstance();
            }
            return null;
        }
        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return tabs[position];
        }
        @Override
        public int getCount() {
            return tabs.length;
        }
    }
Answer 1

Вам нужно задействовать в адаптере контекст.

Как вариант:

public class TabsPagerFragmentAdapter extends FragmentPagerAdapter {
    private String[] tabs;
    private Context context
    public TabsPagerFragmentAdapter(@NonNull FragmentManager fm, @NonNull Context context) {
        super(fm);
        this.context = context;
        tabs = new String[] {
            "Старт",
            "Начало работы",
            "Подключение"
        };
}
. . .

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

context.getString(R.string.my_string);

Этим Вы решите одну часть Вашей задачи.

Для того чтобы решить вторую часть, Вам нужно создать дополнительные файлы strings.xml по одному для каждого языка и поместить в них соответствующие переводы строк. Подробно об этом можно почитать в статье.

READ ALSO
JavaFX и векторные изображения

JavaFX и векторные изображения

Подскажите самый простой метод вывода векторного изображения (расширения SVG, допустим) в контейнер в JavaFX? Имеется ли аналог контейнера ImageView...

67
лямбда выражения в Java (часть 1) [закрыт]

лямбда выражения в Java (часть 1) [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы он был сосредоточен только на одной проблеме

85
Преобразование и приведение типов

Преобразование и приведение типов

Чем отличается преобразование типов от приведения типов? Относятся ли autoboxing/unboxing к преобразованию или приведению?

86
Call to super must be first statement in constructor body [закрыт]

Call to super must be first statement in constructor body [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

97