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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
art_master
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 10
#1

Получение контекста! - Программирование Android

12.05.2014, 10:21. Просмотров 1679. Ответов 17
Метки нет (Все метки)

Здавствуйте участники форума!

На повестке возник такой вопрос. Обрисую ситуацию-> Есть класс, унаследованный от родителя, привязанного к активити. Как мне в этом классе получить контекст приложения???

Попробовал таким образом:

Получение контекста!

Выводит в логи->

Получение контекста!

Это ли есть контекст? Но его не получается использовать в EditText

Получение контекста!

В общем, умные люди, подскажите как правильно получать сиё чудо под названием контекст?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2014, 10:21     Получение контекста!
Посмотрите здесь:

Вызов методов Context из статичного контекста - Программирование Android
Столкнулся с тем, что не могу получить содержимое ресурса из созданных классов. К примеру getString() не доступен. Нашел такой вариант...

Получение ориентации - Программирование Android
Добрый день! Хочу узнать ориентацию, написал функцию: public void getOrintashion () { TextView orint =...

Получение частоты ЦП - Программирование Android
Привет, соседи по планете. Так уж вышло, что необходимо программно получить текущую частоту ЦП. Я уверен, на форуме найдутся...

Получение адреса, по координатам - Программирование Android
Здравствуйте. Заранее извиняюсь, за возможное непонимание очевидных вещей, я с явой, до прошлой недели был знаком только шапочно, но надо,...

Получение списка аудиозаписей из vk - Программирование Android
Добрый день! Пробую написать аудиоплеер, который смог мы проигрывать музыку из контакта. Проигрывание с памяти телефона и SD карты я...

Получение коллекции из бд sqlite - Программирование Android
Доброго времени суток. Есть класс бд: package ru.myscanner.scannerth; import android.content.ContentValues; import...

Получение данных по расписанию - Программирование Android
Немного не могу решить, как это реализовать. В общем, при первом запуске программы (а при последующих проверять) она должна установить...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.05.2014, 10:45     Получение контекста! #2
art_master, это libgdx? Game это точно не контекст.
Цитата Сообщение от art_master Посмотреть сообщение
чудо под названием контекст
Если обратиться к докам, то там будет видно, что:
Контекст есть глобальная информация о приложении (т.е. приложение запускается в контексте). Позволяет получать доступ к ресурсам и классам, а так же вызовам, таким как запуск активити/интент/сервисов.
art_master
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 10
12.05.2014, 11:01  [ТС]     Получение контекста! #3
Что такое контекст, я знаю. Вопрос в том, что он из себя представляет? И самое главное, как его получить, допустим в игровом цикле?

Добавлено через 2 минуты
YuraAAA, нет это не libgdx.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.05.2014, 11:10     Получение контекста! #4
art_master, контекст можно получить в активити (активити и есть контекст) и пробросить через конструктор/метод. Это один вариант. Второй - костыль-менеджер )

Делаем такой класс:
Java
1
2
3
4
5
6
7
8
9
10
11
public class GGManager {
    private static Context context;
 
    public static Context getContext() {
        return context;
    }
 
    public static void setContext(Context context) {
        GGManager.context = context;
    }
}
При старте активити делаем GGManager.setContext(this);
Где нужно забрать контекст - GGManager.getContext();
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
12.05.2014, 11:29     Получение контекста! #5
YuraAAA, а не считается ли плохим тоном делать контекст статиком?

art_master, почему нельзя передать просто контекст в конструкторе? Зачем приведение типов?

А от чего упаследован Game? Если от активити или фрагмента то должна работать следующая конструкция. (Fragment)game. Ее и используйте вместо контекста
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.05.2014, 11:35     Получение контекста! #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от KillAndEat Посмотреть сообщение
а не считается ли плохим тоном делать контекст статиком?
Да, считается. По-этому, он я и назвал его GGManager
Нормальным тоном считается, если сделать Singleton класс, который будет унаследован от Application:
Java
1
2
3
4
5
6
public class TheApplication extends Application {
//Singleton access here
///........
///
 
}
И дописав его в манифесте можно будет использовать:

Java
1
TheApplication.getInstance().getApplicationContext()
Это не будет костылём.
art_master
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 10
12.05.2014, 11:54  [ТС]     Получение контекста! #7
KillAndEat, насчет (Fragment)game, нужно попробовать. Да от активити.

YuraAAA, спасибо. Тоже вариант.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.05.2014, 12:56     Получение контекста! #8
art_master, если Game класс унаследован от активити он и есть контекст.
art_master
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 10
12.05.2014, 13:14  [ТС]     Получение контекста! #9
YuraAAA, ну смотрите, я вывел в логи, (Context) game
Вот что получилось....
https://drive.google.com/file/d/0B4K...it?usp=sharing

Я так понимаю, Контекст- это ссылка на функционал приложения. Ну или что-то типа этого.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.05.2014, 13:26     Получение контекста! #10
art_master, Ничего не понятно, что там на скриншоте. Разверните. Там ошибка что ли?
art_master
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 10
12.05.2014, 13:35  [ТС]     Получение контекста! #11
YuraAAA, смотрите, в лог выводит..... ru.engine.chessknight@40519998

ru.engine.chessknight это каталог. @40519998 видимо сама ссылка.

Сейчас проверил команду String info = this.context.getApplicationInfo().className; Работает.
Надо было раньше так сделать. Но вот интересно, контекст есть, а editText не выводится. Может я что-то не так делаю?

Java
1
2
3
4
5
6
7
8
 public void f(Context context) {
         this.editText=new EditText(context);
        editText.setText("Z nen");
        editText.setHeight(400);
        editText.setWidth(400);
        editText.setBackgroundColor(Color.BLACK);
         
 }
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.05.2014, 13:42     Получение контекста! #12
art_master, опять же всё верно. Вы его создали, но не добавили ко view.
art_master
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 10
12.05.2014, 13:53  [ТС]     Получение контекста! #13
Упс. Глюк

Добавлено через 2 минуты
YuraAAA, спасибо сейчас попробую
Это для меня новая тема

Добавлено через 4 минуты
YuraAAA, если не сложно подскажите как это реализовать? Как добавить?
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.05.2014, 14:07     Получение контекста! #14
art_master, покажите разметку (xml файл)
art_master
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 10
12.05.2014, 14:17  [ТС]     Получение контекста! #15
YuraAAA, дело в том что у меня нет xml файлов в приложении. Это как-нибудь можно реализовать программно?
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
12.05.2014, 14:37     Получение контекста! #16
YuraAAA, а с многопоточностью не будет проблем при использовании обычного Singleton в вашем решении? Или его нужно синхронизировать все же?

Добавлено через 25 секунд
А так решение интересное

Добавлено через 3 минуты
только не совсем понимаю как в манифесте его объявлять в таком случае.

Java
1
android:name=".TheApplication"
в классическом случае

Java
1
android:name=".TheApplication.initInstance("
в случае с шаблоном так будет чтоль?
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
12.05.2014, 15:17     Получение контекста! #17
KillAndEat,
XML
1
android:name=".TheApplication"
вот так.

Цитата Сообщение от KillAndEat Посмотреть сообщение
а с многопоточностью не будет проблем при использовании обычного Singleton в вашем решении? Или его нужно синхронизировать все же?
конечно же нет. Дело в том, что instance не порождается в конструкторе.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
class TheApplicaton extends Application {
private static TheApplication instance;
 
public static TheApplication getInstance() {
        return instance;
    }
 
 @Override
    public void onCreate() {
        instance = this;
        super.onCreate();
}
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 16:43     Получение контекста!
Еще ссылки по теме:

Получение значения из spiner - Программирование Android
Как можно получить значение из спайнера? То есть сначала выбираем элементы в спайнере потом по нажатию ок в диалоге это значение передаётся...

Получение списка картинок - Программирование Android
Здравствуйте! Как получить список с адресами всех изображений из стандартной галереи (т.е. только тех, которые в галерее показываются)...

Получение информации об устройстве - Программирование Android
Как программно добраться до сведений об устройстве, в частности, до имени устройства, названия сети, номера телефона и пр.?

Получение языка системы - Программирование Android
Как программно узнать какой язык выбран в настройках телефона? (чтобы он выбирался по-умолчанию при старте программы)

Получение изображения по ссылке - Программирование Android
Дело в том, что у меня в приложении планируется ~7000 картинок, впихивать это все туда не имеет смысла. Но мне бы хотелось при...


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

Или воспользуйтесь поиском по форуму:
art_master
0 / 0 / 0
Регистрация: 29.11.2013
Сообщений: 10
12.05.2014, 16:43  [ТС]     Получение контекста! #18
Ладно, спасибо всем. Особенно пользователю YuraAAA
Реализую то что я хотел графически.
Yandex
Объявления
12.05.2014, 16:43     Получение контекста!
Ответ Создать тему
Опции темы

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