Чтение данных с Activity/
Чтение данных с Activity/
Всем привет. У меня такая ситуация. Есть MainActivity который содержит TabHost. Этот TabHost проинициализирован несколькими вкладками. На каждой вкладке содержится несколько editText, spinner и т.д. Суть дела в том что надо как то провалидировать все эти поля на правильность заполнения. Как это сделать?
Отправной точкой хотел сделать кнопку "ОК" которая была бы описана в MainActivity. Но что на неё вешать вопрос.
Отправной точкой хотел сделать кнопку "ОК" которая была бы описана в MainActivity. Но что на неё вешать вопрос.
- Вложения
-
- пример :)
- Безымянный.png (2.34 КБ) 7628 просмотров
Re: Чтение данных с Activity/
1) Нижние табы не по андроидовски.
2) В обработчике кнопки (onClickListener) получаешь данные со всех фрагментов и проверяешь их.
2) В обработчике кнопки (onClickListener) получаешь данные со всех фрагментов и проверяешь их.
Re: Чтение данных с Activity/
1) Согласен. Сейчас у меня сделано через TabActivity, нужно сделать через ActionBar.
2) Я так понял нужно поработать с фрагментами. С помощь которого я смогу достучаться до любого поля(фрагмента) и также получить его активити. Если есть возможность, скиньте ссылку на ресурс по работе с фрагментами.
2) Я так понял нужно поработать с фрагментами. С помощь которого я смогу достучаться до любого поля(фрагмента) и также получить его активити. Если есть возможность, скиньте ссылку на ресурс по работе с фрагментами.
Re: Чтение данных с Activity/
Есть уроки на данном сайте.
Можно посмотреть что-то вроде этого: http://developer.android.com/training/i ... teral.html
Ну а вообще в гугле много информации по этому поводу.
Можно посмотреть что-то вроде этого: http://developer.android.com/training/i ... teral.html
Ну а вообще в гугле много информации по этому поводу.
Re: Чтение данных с Activity/
Спасибо за ответ. Появились еще пару вопросов. Все реализовал через ActionBar и Fragment.
Есть такой код:
Этот метод реализован в ActionBarActivity, где есть ViewPager.
ViewPager проинициализирован адаптером из 7 фрагментов.
Когда я нахожусь допустим на 4 фрагменте и вызываю метод validate(), то fragment.getView(); возвращает null.
Как мне этого избежать и в любом месте получить любой объект view находящийся в этом фрагменте.
Есть такой код:
Код: Выделить всё
private void validate() {
FragmentManager fragmentManager = getSupportFragmentManager();
List<Fragment> fragments = fragmentManager.getFragments();
for (int i = 0; i < fragments.size(); i++) {
Fragment fragment = fragments.get(i);
CustomFragment CustomFragment = (CustomFragment) fragment;
View view = fragment.getView();
boolean validate = CustomFragment.validate(view);
if(!validate){
mViewPager.setCurrentItem(i);
break;
}
}
}
ViewPager проинициализирован адаптером из 7 фрагментов.
Когда я нахожусь допустим на 4 фрагменте и вызываю метод validate(), то fragment.getView(); возвращает null.
Как мне этого избежать и в любом месте получить любой объект view находящийся в этом фрагменте.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Чтение данных с Activity/
Почитайте про ViewPager в уроках. Там говорилось о том, что есть адаптер, который сохраняет вьюшки фрагментов, но не всех, а только крайних. За это отвечает метод setOffscreenPageLimit(int pageNumber)
Фрагменты могут быть и при этом не иметь View, поэтому может возвращать null
Фрагменты могут быть и при этом не иметь View, поэтому может возвращать null
Re: Чтение данных с Activity/
Если я правильно проблему понял, то дело в том что по умолчанию ViewPager отображает 3 фрагмента (1 по центру и по одному слева и справа). Изменить это число можно функцией setOffscreenPageLimit если не ошибаюсь. Но для семи страниц потребуется установить значение 6. Что не очень хорошо. Вы уверены что вам нужен прямой доступ к view фрагмента?
опоздал чуточку)
опоздал чуточку)
Re: Чтение данных с Activity/
Ясно. Спасибо. Согласен установив на 6 может отразиться на производительности и плавности перехода. Но я подозреваю другого пути нет.
В конечном итоге я просто хочу реализовать проверку правильности заполнения всех полей во всех фрагментах по нажатию одной кнопки вне зависимости на какой вкладки я нахожусь.
В конечном итоге я просто хочу реализовать проверку правильности заполнения всех полей во всех фрагментах по нажатию одной кнопки вне зависимости на какой вкладки я нахожусь.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Чтение данных с Activity/
А подскажите мне алгоритм ввода ваших данных. Подозреваю что вьюПейджер там не нужен.
Re: Чтение данных с Activity/
На словах наверное сложно будет. Дам ссылку, реализация похожа. Слева есть вкладки, снизу кнопка "Далее" которая все валидирует и выводит результат в случае true, в случае false переводит на нужную вкладку.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Чтение данных с Activity/
Я так и думал. нечего там вьюПеджеру делать. Алгоритм такой:
В наличии: Активность - Слушатель - Фрагменты
1. Активность реализует слушатель. Активность также меняет фрагменты внутри себя после того, как во фрагменте нажмется кнопка "далее"
2. Фрагменты после нажатия кнопки "далее" проверяют валидность введенных данных, после чего через слушатель вызывают необходимые данные, которые сохраняются переменными в самой активности. Другими словами, Activity как бы накапливает введенные данные в свои переменные.
В такой последовательности и кнопка назад будет грамотно работать, вам даже реализовывать её не придется. Но ViewPager тут не нужен.
В наличии: Активность - Слушатель - Фрагменты
1. Активность реализует слушатель. Активность также меняет фрагменты внутри себя после того, как во фрагменте нажмется кнопка "далее"
2. Фрагменты после нажатия кнопки "далее" проверяют валидность введенных данных, после чего через слушатель вызывают необходимые данные, которые сохраняются переменными в самой активности. Другими словами, Activity как бы накапливает введенные данные в свои переменные.
В такой последовательности и кнопка назад будет грамотно работать, вам даже реализовывать её не придется. Но ViewPager тут не нужен.
Re: Чтение данных с Activity/
Согласен. Но хотелось бы свободного плаванья по этим вкладкам. Если я заполнил 4 вкладки и захотел поменять что то в 1 нужно щелкать до первой вкладки. Мне кажется не совсем удобно.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Чтение данных с Activity/
В вашем примере с браузером у вас:
1. есть рядом целая менюшка, которая показывает что заполнено, а что нет,
2. и более того, вы можете сразу кликнуть по тому, что не заполнено.
Там всё это замечательно
А что у вас? Ни того, ни другого. Как вам понять что вы не ввели? как вам вернуться сразу на нужный фрагмент?
1. есть рядом целая менюшка, которая показывает что заполнено, а что нет,
2. и более того, вы можете сразу кликнуть по тому, что не заполнено.
Там всё это замечательно
А что у вас? Ни того, ни другого. Как вам понять что вы не ввели? как вам вернуться сразу на нужный фрагмент?
Re: Чтение данных с Activity/
Вот я и хотел реализовать с помощью ActionBarActivity.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Чтение данных с Activity/
вы сначала визуально представьте себе что и как будет на экране. Я вот по вашим словам вижу, что вы не сможете выполнить те два пункта, которые есть в браузере
Re: Чтение данных с Activity/
Спасибо. В общем я мысль понял. Буду пробовать реализовать все это дело.
