Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
14 / 14 / 2
Регистрация: 21.01.2015
Сообщений: 131

String-array resources, как глобальная переменная

22.01.2015, 01:52. Показов 1985. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется помощь!

У меня есть 16 массивов <string-array>, в активити, когда я хочу обратится к ним, прописывать для каждого
Java
1
2
Resources res_name = getResources();
String[] nameArray = res_name.getStringArray(R.array.name_string_array);
выйдет слишком громоздко.

Я хочу определить массивы глобально, а потом просто получать переменную уже заданного массива.

К примеру, я создал класс GlobalVars.java, из которого хочу получать переменную в активити путем GlobalVars.nameArray, в которой будет содержаться уже определенной массив.
Пробовал задать стандартно в созданном классе GlobalVars.java, но среда ругается, что метод Resources не может быть определен.

Каким образом мне задать эти глобальные переменные и не получить креш приложения?

Добавлено через 5 часов 46 минут
Проблему решил. Если кому будет интересно как - обращайтесь, расскажу.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2015, 01:52
Ответы с готовыми решениями:

Глобальная переменная string
Как сделать переменную string, которая бы работала во всех формах? Допустим я на родительской форме создаю string text...

Глобальная или статическая переменная не может иметь тип управляемый "System::String ^"
Привет, такая проблема, необходимо создать объект типа String в программе вот часть кода: namespace Kurs_1 { using namespace System;...

Глобальная переменная, как сделать
Здравствуйте, как объявить глобальную переменную единую для всех процедур.

8
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
22.01.2015, 08:26
В двух словах если можно.
0
14 / 14 / 2
Регистрация: 21.01.2015
Сообщений: 131
22.01.2015, 14:00  [ТС]
Не уверен, что найденный мною способ соответствует всем нормам и его можно назвать правильным, но по факту он рабочий.

1) в мейн активити задаем переменную instance
Java
1
private static MainActivity instance;
2) Определяем переменную instance в onCreate, обязательно перед super.onCreate
Java
1
2
3
4
protected void onCreate(Bundle savedInstanceState) {
        instance = this;
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
3) Так же определяем два метода в мейн активити
Java
1
2
3
4
5
6
public static MainActivity getInstance() {
        return instance;
    }
    public static Context getContext() {
        return instance.getApplicationContext();
    }
4) В классе для глобальных переменных (у меня это класс GlobalVars) определяем context и можем задать ресурсы
Java
1
2
3
4
public class GlobalVars {
 public static Context context = MainActivity.getContext();
 public static final String[] days = context.getResources().getStringArray(R.array.daysList);
}
5) Теперь можем обратится к ресурсам из другого класса. Я обращался из мейн активити. Достаточно написать
Java
1
GlobalVars.days
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
22.01.2015, 15:29
Не знаю как у вас используютя эти глобальные переменные, но static MainActivity смущает.
А не использовать ли лучше sqlite?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
22.01.2015, 15:46
Hedd, не хорошо так делать - если у вас только одна активити еще куда не шло, но вот если их хотя бы две и вы будете брать эти данные из второй - будет запускаться первая. Она будет кушать память и замедлять работу. Вам всего-то нужно передавать контекст при вызове этих констант из другого класса. Можно хоть так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class GlobalVars {
 
    private static GlobalVars instance;
    private String[] days;
 
    private GlobalVars(){
 
    }
 
    public String[] getDays(Context context){
        return context.getResources().getStringArray(R.array.daysList);
    }
 
}
И потом получать их из любого места:
Java
1
GlobalVars.getDays(context);
1
14 / 14 / 2
Регистрация: 21.01.2015
Сообщений: 131
22.01.2015, 17:39  [ТС]
Rube, меня тоже смущал static MainActivity, но на тот момент я не нашел другого решения. Об SQLite не думал. Мне казалось, что с моим небольшим кол-вом данных SQLite будет лишним. Возможно я не прав
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
22.01.2015, 17:44
Да тут дело не в кол-ве данных, а в методах их использования, типа выборки записей при определенном условии.
Я ж говорю - смотря как данные используются, отсюда и плясать.
0
14 / 14 / 2
Регистрация: 21.01.2015
Сообщений: 131
22.01.2015, 18:00  [ТС]
Rube, У меня при нажатии на определенный элемент спиннера отображается ListView с определенными данными, которые хранятся в строковых массивах. Каждый элемент-строка ListView состоит из 4 элементов TextView с разными данными.

Добавлено через 9 минут
Spelcrawler, Понял о чем вы говорите. У меня сейчас одна активити. Попробую как-нибудь ваш вариант. Только у меня вопрос, где будет тогда использоваться instance и days с вашего кода. Так же, разве при вызове GlobalVars.getDays(context) из любого другого класса, среда не будет ругаться, что переменная context не определена?
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
23.01.2015, 09:32
Цитата Сообщение от Hedd Посмотреть сообщение
где будет тогда использоваться instance и days с вашего кода
Нигде, сначала по другому хотел написать - потом упростил.
Цитата Сообщение от Hedd Посмотреть сообщение
Так же, разве при вызове GlobalVars.getDays(context) из любого другого класса, среда не будет ругаться, что переменная context не определена?
А вы ее определяйте в активити можно писать this вместо контекст т.к. класс Activity наследуется от класса Context. Еще от контекста наследуется Service. Во всех остальных классах нужно получать контекст от активити или от сервиса, а потом посылать дальше.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.01.2015, 09:32
Помогаю со студенческими работами здесь

Таблица - глобальная переменная: как?
Собственно, вопрос в заголовке: как объявить/использовать глобальную переменную типа table? Задание: Найти сколько раз встречается...

Глобальная переменная определена в хидере. Компилятор ругается на то, что переменная переопределена несколько раз
Исходники: /* main.cpp */ #include &quot;hider.h&quot; int main(void) { return 0; } /* foo.cpp */

Переменная сессии видна как глобальная
Всех приветствую. Помогите, пожалуйста, разобраться. Есть переменная $_SESSION. Почему при обращении к переменной $name, которую я не...

Динамический массив как глобальная переменная
Доброго времени суток, даже с google никак не смогу разобраться со следующей задачей: Хочу объявить матрицу(matrix допустим) глобальной...

Глобальная переменная(не пойму как точно сделать)
Привет.. Делаю менюшку... Ну как в .... Блокноте &quot;Файл, Правка, Справка&quot;. Меню выпадающее, тоесть нажимаем на файл - там открыть,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru