Урок 77. Tab - вкладки. TabActivity. Activity, как содержимое вкладки
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Ну так и стройте проект на платформе Android 2.3.3
Project->Properties->Android выберите платформу Android 2.3.3
Если у вас нет этого пакета, скачайте через Android SDK Manager
Если вы будете строить проект на новых платформах, то нет никаких гарантий, что приложение будет работать под старыми версиями Android.
ЗЫ Вы же не будете писать приложение под XP на API Win7
Project->Properties->Android выберите платформу Android 2.3.3
Если у вас нет этого пакета, скачайте через Android SDK Manager
Если вы будете строить проект на новых платформах, то нет никаких гарантий, что приложение будет работать под старыми версиями Android.
ЗЫ Вы же не будете писать приложение под XP на API Win7
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Привет!
Я только начинаю изучать, поэтому многое не знаю и не понятно...
Разбираюсь с сабжем.
Подскажите, плз, как можно вызвать метод активити вкладки из главного активити.
Смысл:
MainActivity содержит Spinner и Tabs с двумя вкладками (с какими-то элементами ввода/вывода TextView, Spinner, etc). Необходимо при изменении значения выбора Spinner в MainActivity изменить значения элементов ввода/вывода во вкладках.
Решил, что это можно реализовать в onItemSelected для Spinner из MainActivity вызвав public-методы активити вкладок, передав туда код выбранного элемента и по нему уже установить требуемые значения элементов ввода/вывода во вкладках.
Но никак не получается достучаться до этих public-методов активити вкладок...
Или это реализуется по другому?
Заранее благодарен.
Я только начинаю изучать, поэтому многое не знаю и не понятно...
Разбираюсь с сабжем.
Подскажите, плз, как можно вызвать метод активити вкладки из главного активити.
Смысл:
MainActivity содержит Spinner и Tabs с двумя вкладками (с какими-то элементами ввода/вывода TextView, Spinner, etc). Необходимо при изменении значения выбора Spinner в MainActivity изменить значения элементов ввода/вывода во вкладках.
Решил, что это можно реализовать в onItemSelected для Spinner из MainActivity вызвав public-методы активити вкладок, передав туда код выбранного элемента и по нему уже установить требуемые значения элементов ввода/вывода во вкладках.
Но никак не получается достучаться до этих public-методов активити вкладок...
Или это реализуется по другому?
Заранее благодарен.
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Другие activity в это время в паузе, 2) просто обратившись к ним не получится достучаться; 2) у вас нету объекта что бы обращаться к паблик методам.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Насколько я понимаю, объекты создаются при onCreate. Вставил вывод в лог тестового сообщения в onCreate каждой активити. При запуске приложения отображается первая вкладка Tabs с принадлежащей ей объектами ввода/вывода и лог выводится тестовое сообщение (для второй активити только при переключении на вторую вкладку) => по крайней мере, объекты первой (активной) вкладки создаются сразу после старта приложения. Или это не так?rezak90 писал(а):Другие activity в это время в паузе, 2) просто обратившись к ним не получится достучаться; 2) у вас нету объекта что бы обращаться к паблик методам.
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Первая создаётся потому что она при старте, вторая создастся при переключении, но как только вы переходите на вторую то первая переходит в паузу и обратится к её элементам не получится. Вы чуть не правильно мыслите, вам нужно передавать данные а не менять элементы, передали данные из первой вкладки во вторую и во второй эти данные используйте/меняйте.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Возможно, я не ясно задал вопрос, но мне необходимо другое.rezak90 писал(а):Первая создаётся потому что она при старте, вторая создастся при переключении, но как только вы переходите на вторую то первая переходит в паузу и обратится к её элементам не получится. Вы чуть не правильно мыслите, вам нужно передавать данные а не менять элементы, передали данные из первой вкладки во вторую и во второй эти данные используйте/меняйте.
Нет необходимости передавать данные из одной вкладки в другую. Надо установить определенные значения в объекты вкладок при изменения выбора в Spinner из MainActivity. Например, в Spinner выбираем "Яблоко", тогда в первой вкладке "Цвет" в TextView1 выводится "Красное", а во второй вкладке "Размер" в TextView2 выводится "Большое".
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
я вас правильно понял, вот вы во вторую вкладку и передаёте слово "Большое", во второй активити принимаете данные и присваиваете их своей TextView2 текст. В андроиде не меняется (менять можно но костылями) контент когда он не активен, исходя из входящих данных он и меняется.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Нет. Во вкладки ничего кроме индекса выбранного элемента в Spinner из MainActivity не передается.rezak90 писал(а):я вас правильно понял, вот вы во вторую вкладку и передаёте слово "Большое", во второй активити принимаете данные и присваиваете их своей TextView2 текст. В андроиде не меняется (менять можно но костылями) контент когда он не активен, исходя из входящих данных он и меняется.
"Красное" является элементом массива цветов, который принадлежит классу первой вкладки. "Большое" является элементом массива размеров, который принадлежит классу второй вкладки. Выбор элемента из этих массивов должен выполняться в зависимости от выбранного значения Spinner из MainActivity.
Наверное, можно попробывать следующее:
1. В обработчике onItemSelected Spinner из MainActivity определять активную вкладку. В зависимости от выбранной вкладки по R.id.* выбирать все элементы ввода/вывода и устанавливать их значения.
2. При выборе любой вкладки в onResume считывать значение выбранного значения в Spinner из MainActivity (например, объявив static-переменную в MainActivity, в которую и заносить выбранное значение из Spinner по onItemSelected) и устанавливать по его значению все элементы ввода/вывода, принадлежащие данной вкладке.
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
ну раз хочется велосипед то пожалуйста
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Мне хочется, чтобы элементы ввода/вывода во вкладках устанавливались в значения, выбранные из массивов, принадлежащих вкладкам, в соответствии с выбранным значение Spinner из MainActivity. А как это реализовать - пока не знаю. Поэтому сюда и обратился. И является ли предложенный мной способ велосипедом - то же не знаю...rezak90 писал(а):ну раз хочется велосипед то пожалуйста
Но, все равно, спасибо за обсуждение.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Передавать данные в еще не созданный объект нет смысла.
Можно поступить так, при изменении значений в одной из вкладок, записывать значения в Preferences. Затем, всех вкладках переопределить метод onResume() в котором нужно будет вытащить необходимые, для конкретной вкладки, значения из Preferences и по этим данным заполнить вкладку.
Либо, вместо Preferences можно использовать Singleton.
Можно поступить так, при изменении значений в одной из вкладок, записывать значения в Preferences. Затем, всех вкладках переопределить метод onResume() в котором нужно будет вытащить необходимые, для конкретной вкладки, значения из Preferences и по этим данным заполнить вкладку.
Либо, вместо Preferences можно использовать Singleton.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Зачем в языке вообще существует private? Давайте всё объявлять в статик и меньше проблем будет)))) если кто то увидит такой код то по голове не погладят. Да это решит вашу данную задачу, но это не есть хороший способ. Это был бы хороший способ если бы он был единственным выходом.
Вариант с преференсом не плох, но тоже не идеален, не говорю что он плох, просто не логичен и не оправдан, если бы мой начальник посмотрел и спросил бы зачем я использую файл для того что бы хранить всего одну цифру он бы меня оштрафовал =).
Для чего в андроиде существует bundle? Для того что бы передавать через него данные. Вот и мой вывод что следует через него передавать из активити в активити.
Вариант с преференсом не плох, но тоже не идеален, не говорю что он плох, просто не логичен и не оправдан, если бы мой начальник посмотрел и спросил бы зачем я использую файл для того что бы хранить всего одну цифру он бы меня оштрафовал =).
Для чего в андроиде существует bundle? Для того что бы передавать через него данные. Вот и мой вывод что следует через него передавать из активити в активити.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Что-то я не совсем пойму как в этой ситуации использовать Bundle.rezak90 писал(а):Для чего в андроиде существует bundle? Для того что бы передавать через него данные. Вот и мой вывод что следует через него передавать из активити в активити.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
самый простой, это хранить в табхосте tabspec и при нажатии на соответствующий tabspec делать ему новый setContent в который класть интент с установленным бандлом.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Подскажите как программно можно перейти на другую вкладку?
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
У TabHost есть метод setCurrentTabigrok-vip писал(а):Подскажите как программно можно перейти на другую вкладку?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Да, я тоже сразу про него подумал, но почему-то если ставлю:
TabHost tabHost = getTabHost();
tabHost.setCurrentTabByTag("tag2");
допустим в кнопку на первой активити, то приложение вылетает с ошибкой.
Наверное как-то по другому нужно сделать?
TabHost tabHost = getTabHost();
tabHost.setCurrentTabByTag("tag2");
допустим в кнопку на первой активити, то приложение вылетает с ошибкой.
Наверное как-то по другому нужно сделать?
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Кстати, не забывайте, что передача через Intent -- довольно медленная. Значительно быстрее было бы использовать какой-нибдуь Singleton и передавать его. Это будет экономнее как по времени исполнения, так и по объёму кода.
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
всё правильно, а то что вылетает не означает что не правильно))) ошибку в студиюigrok-vip писал(а):Да, я тоже сразу про него подумал, но почему-то если ставлю:
TabHost tabHost = getTabHost();
tabHost.setCurrentTabByTag("tag2");
допустим в кнопку на первой активити, то приложение вылетает с ошибкой.
Наверное как-то по другому нужно сделать?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 77. Tab - вкладки. TabActivity. Activity, как содер
Понял в чём проблема была. Кнопка находится на OneActivity а обработчик в MainActivity. Но если написать обработчик в OneActivity, то он не знает что такое getTabHost, а если OneActivity наследовать от TabActivity как MainActivity - то приложение вылетает сразу после запуска. Подскажите как сделать?