Страница 1 из 1
Чтение данных с Activity/
Добавлено: 16 сен 2014, 14:08
Owen
Всем привет. У меня такая ситуация. Есть MainActivity который содержит TabHost. Этот TabHost проинициализирован несколькими вкладками. На каждой вкладке содержится несколько editText, spinner и т.д. Суть дела в том что надо как то провалидировать все эти поля на правильность заполнения. Как это сделать?
Отправной точкой хотел сделать кнопку "ОК" которая была бы описана в MainActivity. Но что на неё вешать вопрос.
Re: Чтение данных с Activity/
Добавлено: 17 сен 2014, 09:16
klblk
1) Нижние табы не по андроидовски.
2) В обработчике кнопки (onClickListener) получаешь данные со всех фрагментов и проверяешь их.
Re: Чтение данных с Activity/
Добавлено: 17 сен 2014, 09:33
Owen
1) Согласен. Сейчас у меня сделано через TabActivity, нужно сделать через ActionBar.
2) Я так понял нужно поработать с фрагментами. С помощь которого я смогу достучаться до любого поля(фрагмента) и также получить его активити. Если есть возможность, скиньте ссылку на ресурс по работе с фрагментами.
Re: Чтение данных с Activity/
Добавлено: 18 сен 2014, 06:55
klblk
Есть уроки на данном сайте.
Можно посмотреть что-то вроде этого:
http://developer.android.com/training/i ... teral.html
Ну а вообще в гугле много информации по этому поводу.
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 12:05
Owen
Спасибо за ответ. Появились еще пару вопросов. Все реализовал через ActionBar и Fragment.
Есть такой код:
Код: Выделить всё
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;
}
}
}
Этот метод реализован в ActionBarActivity, где есть ViewPager.
ViewPager проинициализирован адаптером из 7 фрагментов.
Когда я нахожусь допустим на 4 фрагменте и вызываю метод validate(), то fragment.getView(); возвращает null.
Как мне этого избежать и в любом месте получить любой объект view находящийся в этом фрагменте.
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 12:21
Mikhail_dev
Почитайте про ViewPager в уроках. Там говорилось о том, что есть адаптер, который сохраняет вьюшки фрагментов, но не всех, а только крайних. За это отвечает метод setOffscreenPageLimit(int pageNumber)
Фрагменты могут быть и при этом не иметь View, поэтому может возвращать null
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 12:32
klblk
Если я правильно проблему понял, то дело в том что по умолчанию ViewPager отображает 3 фрагмента (1 по центру и по одному слева и справа). Изменить это число можно функцией
setOffscreenPageLimit если не ошибаюсь. Но для семи страниц потребуется установить значение 6. Что не очень хорошо. Вы уверены что вам нужен прямой доступ к view фрагмента?
опоздал чуточку)
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 12:55
Owen
Ясно. Спасибо. Согласен установив на 6 может отразиться на производительности и плавности перехода. Но я подозреваю другого пути нет.
В конечном итоге я просто хочу реализовать проверку правильности заполнения всех полей во всех фрагментах по нажатию одной кнопки вне зависимости на какой вкладки я нахожусь.
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 13:28
Mikhail_dev
А подскажите мне алгоритм ввода ваших данных. Подозреваю что вьюПейджер там не нужен.
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 14:26
Owen
На словах наверное сложно будет. Дам
ссылку, реализация похожа. Слева есть вкладки, снизу кнопка "Далее" которая все валидирует и выводит результат в случае true, в случае false переводит на нужную вкладку.
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 14:40
Mikhail_dev
Я так и думал. нечего там вьюПеджеру делать. Алгоритм такой:
В наличии: Активность - Слушатель - Фрагменты
1. Активность реализует слушатель. Активность также меняет фрагменты внутри себя после того, как во фрагменте нажмется кнопка "далее"
2. Фрагменты после нажатия кнопки "далее" проверяют валидность введенных данных, после чего через слушатель вызывают необходимые данные, которые сохраняются переменными в самой активности. Другими словами, Activity как бы накапливает введенные данные в свои переменные.
В такой последовательности и кнопка назад будет грамотно работать, вам даже реализовывать её не придется. Но ViewPager тут не нужен.
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 14:55
Owen
Согласен. Но хотелось бы свободного плаванья по этим вкладкам. Если я заполнил 4 вкладки и захотел поменять что то в 1 нужно щелкать до первой вкладки. Мне кажется не совсем удобно.
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 15:05
Mikhail_dev
В вашем примере с браузером у вас:
1. есть рядом целая менюшка, которая показывает что заполнено, а что нет,
2. и более того, вы можете сразу кликнуть по тому, что не заполнено.
Там всё это замечательно
А что у вас? Ни того, ни другого. Как вам понять что вы не ввели? как вам вернуться сразу на нужный фрагмент?
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 15:29
Owen
Вот я и хотел реализовать с помощью ActionBarActivity.
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 15:53
Mikhail_dev
вы сначала визуально представьте себе что и как будет на экране. Я вот по вашим словам вижу, что вы не сможете выполнить те два пункта, которые есть в браузере
Re: Чтение данных с Activity/
Добавлено: 24 сен 2014, 17:48
Owen
Спасибо. В общем я мысль понял. Буду пробовать реализовать все это дело.