Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Анарион
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
#1

Как получить возможность обращатся к глобальным переменным? - Android

22.01.2016, 12:43. Просмотров 190. Ответов 12
Метки нет (Все метки)

именно к переменным, а не к константам. Нашел совет объявить класс на основе Application

Java
1
2
3
4
5
6
7
8
9
10
11
public class MyApplication extends Application {
  private MyPreciousClass myPreciousObject;
 
  public getMyPreciousClass getMyPreciousObject() {
     return this.myPreciousObject;
  }
}
 
//где в коде
MyApplication myApp=(MyApplication)this.getApplication();
myPreciousObject=myApp.getMyPreciousObject();
но тут вот в чем проблема - getApplication почему то работает только из главной activity а во внутренних классах - не работает. что необходимо предпринять чтобы этот класс был доступен абсолютно из любого класса?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
22.01.2016, 12:48     Как получить возможность обращатся к глобальным переменным? #2
Анарион, сделать singleton
Анарион
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
22.01.2016, 13:09  [ТС]     Как получить возможность обращатся к глобальным переменным? #3
а как потом к нему обращаться?
Паблито
2017 / 1759 / 548
Регистрация: 12.05.2014
Сообщений: 6,240
Завершенные тесты: 1
22.01.2016, 13:19     Как получить возможность обращатся к глобальным переменным? #4
делать глобальные переменные - это не по феншую
все данные из одного класса в другой можно передавать через вызов методов, конструкторы или например через SharedPreferences
в некоторых случаях между некоторыми классами можно передавать бандлы (Bundle)

тот самый момент, когда понимаешь что человек не знает как нормально выстроить архитектуру приложения, но как задать ему вопрос я не знаю

Что-то типа - что же ты хочешь сделать на самом деле? Это ведь не основная цель - сделать глобальные переменные, это уже следствие чего-то.
Анарион
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
22.01.2016, 13:45  [ТС]     Как получить возможность обращатся к глобальным переменным? #5
не по теме: жалко на форуме нет минусов к карме.
YuraAAA
22.01.2016, 13:48
  #6

Не по теме:

Анарион, есть. Вам продемонстрировать что ли?

Паблито
2017 / 1759 / 548
Регистрация: 12.05.2014
Сообщений: 6,240
Завершенные тесты: 1
22.01.2016, 13:49     Как получить возможность обращатся к глобальным переменным? #7
есть минусы и я ими активно пользуюсь (и меня тоже минусуют, даже те кому я помогал и давал нормальные ответы по теме)

но ты не понял что я хотел сказать, попробую другими словами - ты спрашиваешь как что-то сделать, а я спрашиваю - а что ты на самом деле собираешься сделать, так как считаю что доступ к глобальным переменным - это не основная цель
Lumber
96 / 96 / 37
Регистрация: 02.12.2015
Сообщений: 236
22.01.2016, 16:35     Как получить возможность обращатся к глобальным переменным? #8
Почему обязательно на основе Application? Любой public класс подойдёт.

Статические публичные поля и будут доступны везде и всегда.
Java
1
2
3
public class Globals {
    public static String globalString;
}
будет доступно как:

Java
1
Globals.globalString
из других пакетов тоже, но надо имя пакета будет добавить.
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
22.01.2016, 17:07     Как получить возможность обращатся к глобальным переменным? #9
Lumber, все так, но если вдруг все ссылки на этот класс пропадут - он тоже пропадет и при следующем обращении к этой переменной получим дефолтное значение.
Анарион
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
22.01.2016, 17:27  [ТС]     Как получить возможность обращатся к глобальным переменным? #10
а объявлять класс нужно? а переменные static можно менять?
Lumber
96 / 96 / 37
Регистрация: 02.12.2015
Сообщений: 236
22.01.2016, 19:19     Как получить возможность обращатся к глобальным переменным? #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Spelcrawler Посмотреть сообщение
но если вдруг все ссылки на этот класс пропадут - он тоже пропадет
Какие ссылки? Здесь не создаётся экземпляр класса и соответственно ссылок нет. Статические переменные не нуждаются в экземпляре класса.

Цитата Сообщение от Анарион Посмотреть сообщение
а объявлять класс нужно? а переменные static можно менять?
Объявление это то что я написал. Создавать экземпляр не нужно. Статики не нуждаются в экземплярах. Можно поле сделать приватным и добавить геттеры/сеттеры - они тоже должны быть статические (чтобы экземпляр не создавать).

Static не влияет на возможность изменения, это означает что поле существует вне связи с экземпляром класса.
По сути это глобальная переменная с именем "Globals.globalString".
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
22.01.2016, 19:31     Как получить возможность обращатся к глобальным переменным? #12
Цитата Сообщение от Lumber Посмотреть сообщение
Какие ссылки? Здесь не создаётся экземпляр класса и соответственно ссылок нет
А ну да, чет тупанул.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2016, 21:17     Как получить возможность обращатся к глобальным переменным?
Еще ссылки по теме:

Возможность редактирования текста с GridView Android
Взять символы с EditText и прировнять их к переменным.Как это можно сделать? Android
Android Webview, добавить возможность покупки пакетов
Проверить возможность приведения типа Android
Возможность использования Java 8 в Android Android

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

Или воспользуйтесь поиском по форуму:
Анарион
8 / 9 / 3
Регистрация: 18.11.2009
Сообщений: 676
22.01.2016, 21:17  [ТС]     Как получить возможность обращатся к глобальным переменным? #13
Static не влияет на возможность изменения, это означает что поле существует вне связи с экземпляром класса.

ага спасибо, попробую

Добавлено через 47 минут
да все сработало, спасибо.
Yandex
Объявления
22.01.2016, 21:17     Как получить возможность обращатся к глобальным переменным?
Ответ Создать тему
Опции темы

Текущее время: 09:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru