Урок 125. ViewPager
Re: Урок 125. ViewPager
Уважаемые форумчане!
Обращаюсь к вам за помощью повторно.
Вопрос был такой:
Есть несколько фрагментов: fragment1.xml, fragment2.xml ..., fragment15.xml.
Как сделать так, чтобы перелистывание страниц осуществлялось программно и через заданный интервал времени, и при этом на страницу 1 подставлялось содержимое фрагмента 1, на страницу 2 - фрагмента 2 и т.д.
Мне ответили, что нужно использовать пример, расположенный здесь:
http://developer.android.com/reference/ ... tItem(int)
Я попробовал использовать пример по указанной ссылке.
В папке layout создал 2 файла fragment_pager_list.xml и fragment_pager.xml, в папке src создал новый класс FragmentPagerSupport.java
Но ничего не получается и не работает.
Не могли бы Вы мне помочь и на конкретном примере показать как можно сделать так, чтобы перелистывание страниц осуществлялось программно и через заданный интервал времени, и при этом на страницу 1 подставлялось содержимое фрагмента 1, на страницу 2 - фрагмента 2 и т.д.
Большое спасибо! Благодарю каждого, кто сможет откликнуться.
Обращаюсь к вам за помощью повторно.
Вопрос был такой:
Есть несколько фрагментов: fragment1.xml, fragment2.xml ..., fragment15.xml.
Как сделать так, чтобы перелистывание страниц осуществлялось программно и через заданный интервал времени, и при этом на страницу 1 подставлялось содержимое фрагмента 1, на страницу 2 - фрагмента 2 и т.д.
Мне ответили, что нужно использовать пример, расположенный здесь:
http://developer.android.com/reference/ ... tItem(int)
Я попробовал использовать пример по указанной ссылке.
В папке layout создал 2 файла fragment_pager_list.xml и fragment_pager.xml, в папке src создал новый класс FragmentPagerSupport.java
Но ничего не получается и не работает.
Не могли бы Вы мне помочь и на конкретном примере показать как можно сделать так, чтобы перелистывание страниц осуществлялось программно и через заданный интервал времени, и при этом на страницу 1 подставлялось содержимое фрагмента 1, на страницу 2 - фрагмента 2 и т.д.
Большое спасибо! Благодарю каждого, кто сможет откликнуться.
Re: Урок 125. ViewPager
никто вам готовый код тут не запостит, можно не надеяться. Возможно, кто-то согласится помочь за плату
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 125. ViewPager
Я готов оплатить помощь по своему вопросу.
Re: Урок 125. ViewPager
Подскажите, должен же быть какой-нибудь способ пересоздать расположенную слева или справа страницу? Или может как-то можно пересоздать все страницы сразу? Или как добраться до фрагмента ViewPager'а из Activity?
Re: Урок 125. ViewPager
Присоединяюсь к предыдущему посту
и вопрос
как передать дополнительные параметры в PageFragment из Activity, при создании ViewPager?
и вопрос
как передать дополнительные параметры в PageFragment из Activity, при создании ViewPager?
Re: Урок 125. ViewPager
берёте из адаптера фрагмент и делаете с ним что угодно, наверное)
Re: Урок 125. ViewPager
Нашёл кое-что:
View v = (View) pager.getChildAt(0);
Далее через v.findViewById(R.id....) находим нужную вьюшку и делаем с ней что хотим.
Потом вызываем
v.invalidate();
v.requestLayout();
Но почему-то getChildAt(0) упорно возвращает не нулевую страницу, а первую. А с моим -1 шлёт куда подальше)) В чём причина?
assan тебе наверное нужно в PageFragment в onCreateView в зависимости от Page_number брать данные из Activity через MainActivity.переменная. Только эта переменная должна быть static. Не уверен, что это правильный способ, но у меня так работает
View v = (View) pager.getChildAt(0);
Далее через v.findViewById(R.id....) находим нужную вьюшку и делаем с ней что хотим.
Потом вызываем
v.invalidate();
v.requestLayout();
Но почему-то getChildAt(0) упорно возвращает не нулевую страницу, а первую. А с моим -1 шлёт куда подальше)) В чём причина?
assan тебе наверное нужно в PageFragment в onCreateView в зависимости от Page_number брать данные из Activity через MainActivity.переменная. Только эта переменная должна быть static. Не уверен, что это правильный способ, но у меня так работает
Re: Урок 125. ViewPager
на каком этапе? когда создаются фрагменты?klblk писал(а):берёте из адаптера фрагмент и делаете с ним что угодно, наверное)
Re: Урок 125. ViewPager
да так работает, если не нравится - можно и через геттер обращаться, но он тоже должен быть static.igrok-vip писал(а): assan тебе наверное нужно в PageFragment в onCreateView в зависимости от Page_number брать данные из Activity через MainActivity.переменная. Только эта переменная должна быть static. Не уверен, что это правильный способ, но у меня так работает
Re: Урок 125. ViewPager
у самого нет сейчас возможности проверить, как-то так:assan писал(а):на каком этапе? когда создаются фрагменты?klblk писал(а):берёте из адаптера фрагмент и делаете с ним что угодно, наверное)
((PageFragment) adapter.getItem(position)).update();
где position номер страницы, а update() метод PageFragment в котором мы его обновляем
Re: Урок 125. ViewPager
gorod писал(а):Уважаемые форумчане!
Обращаюсь к вам за помощью повторно.
Вопрос был такой:
Есть несколько фрагментов: fragment1.xml, fragment2.xml ..., fragment15.xml.
Как сделать так, чтобы перелистывание страниц осуществлялось программно и через заданный интервал времени, и при этом на страницу 1 подставлялось содержимое фрагмента 1, на страницу 2 - фрагмента 2 и т.д.
...
Из этой части кода думаю все будет понятно
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view;
if(pageNumber == 0)
view = inflater.inflate(R.layout.fragment0, null);
else if(pageNumber == 1)
view = inflater.inflate(R.layout.fragment1, null);
else if(pageNumber == 2)
view = inflater.inflate(R.layout.fragment2, null);
else
view = inflater.inflate(R.layout.fragment, null);
TextView tvPage = (TextView) view.findViewById(R.id.tvPage);
tvPage.setText("Page " + pageNumber);
tvPage.setBackgroundColor(backColor);
***
Re: Урок 125. ViewPager
Уважаемые форумчане!
Подскажите, пожалуйста, как сделать так, чтобы перелистывание страниц (фрагментов: fragment1.xml, fragment2.xml ..., fragmentN.xml) осуществлялось программно и через заданный интервал времени. В уроке 125 написано: "Чтобы программно перелистнуть страницу ViewPager используйте метод setCurrentItem".
В MainActivity.java в код:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
pager.setAdapter(pagerAdapter);
я вставил следующее: pager.setCurrentItem(1);
Однако при запуске проекта открывается страница 1, и соответственно если указать pager.setCurrentItem(2), то при запуске откроется страница 2.
А как все-таки сделать так, чтобы перелистывание осуществлялось программно и через заданный интервал времени?
Спасибо!
Подскажите, пожалуйста, как сделать так, чтобы перелистывание страниц (фрагментов: fragment1.xml, fragment2.xml ..., fragmentN.xml) осуществлялось программно и через заданный интервал времени. В уроке 125 написано: "Чтобы программно перелистнуть страницу ViewPager используйте метод setCurrentItem".
В MainActivity.java в код:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = (ViewPager) findViewById(R.id.pager);
pagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
pager.setAdapter(pagerAdapter);
я вставил следующее: pager.setCurrentItem(1);
Однако при запуске проекта открывается страница 1, и соответственно если указать pager.setCurrentItem(2), то при запуске откроется страница 2.
А как все-таки сделать так, чтобы перелистывание осуществлялось программно и через заданный интервал времени?
Спасибо!
Re: Урок 125. ViewPager
можно думаю с помощью timer+handler
Re: Урок 125. ViewPager
Подскажите пожалуйста кто-нибудь. Сделал почти всё что хотел с viewpager'ом, осталось только сделать возможность удалять страницы, но не выходит.
У меня как в уроке есть переменная PAGE_COUNT, увеличив её добивался увеличения пролистываемых страниц, а с уменьшением так не выходит. Видимо последняя страница висит где-то в памяти. При попытке пролистать до неё её видно, но viewpager пружинит обратно на существующую. Как убрать ту последнюю удалённую, чтобы нельзя было её вообще увидеть?
У меня как в уроке есть переменная PAGE_COUNT, увеличив её добивался увеличения пролистываемых страниц, а с уменьшением так не выходит. Видимо последняя страница висит где-то в памяти. При попытке пролистать до неё её видно, но viewpager пружинит обратно на существующую. Как убрать ту последнюю удалённую, чтобы нельзя было её вообще увидеть?
Re: Урок 125. ViewPager
Если не ошибаюсь, то добавление и удаление экранов или страниц реализуется с помощью методов instantiateItem() и destroyItem() соответственно.igrok-vip писал(а):осталось только сделать возможность удалять страницы, но не выходит. Как убрать ту последнюю удалённую, чтобы нельзя было её вообще увидеть?
Re: Урок 125. ViewPager
Ага, есть такие, но не пойму что ему нужно передать в качестве параметров.
Допустим у меня 2 страницы и я пытаюсь удалить нулевую находясь на ней.
Пытаюсь сделать так:
[syntax=java]
int pos = pager.getCurrentItem();
pager.setCurrentItem(pos+1);
pagerAdapter.destroyItem(pager, pos, null);
[/syntax]
Первый параметр ViewGroup container похоже это мой ViewPager - pager
Второй порядковый номер удаляемой страницы pos
А вот что за третий Object object не пойму.
В таком виде как сейчас при попытке удалить ошибка
Допустим у меня 2 страницы и я пытаюсь удалить нулевую находясь на ней.
Пытаюсь сделать так:
[syntax=java]
int pos = pager.getCurrentItem();
pager.setCurrentItem(pos+1);
pagerAdapter.destroyItem(pager, pos, null);
[/syntax]
Первый параметр ViewGroup container похоже это мой ViewPager - pager
Второй порядковый номер удаляемой страницы pos
А вот что за третий Object object не пойму.
В таком виде как сейчас при попытке удалить ошибка
Re: Урок 125. ViewPager
Если находишься на нулевой странице, то pos+1 скорее всего удалит только следующую.
А может быть попробовать так:
[syntax=java]
pager.setCurrentItem(pos-1);
[/syntax]
А может быть попробовать так:
[syntax=java]
pager.setCurrentItem(pos-1);
[/syntax]
Re: Урок 125. ViewPager
Не, не в этом дело. Если допустим удалить первую страницу находясь на нулевой, то ошибка сразу не появляется, а только при пролистывании на эту страницу. Получается страница как бы удалена, но "viewpager об этом не знает" или типо того.
И главное ошибка даже если чуть-чуть потянуть и отпустить назад на нулевую)
И главное ошибка даже если чуть-чуть потянуть и отпустить назад на нулевую)
Re: Урок 125. ViewPager
Может быть попробовать в адаптере прописать примерно так:
[syntax=java]
public class SamplePagerAdapter extends PagerAdapter{
ViewPager pages = null;
public SamplePagerAdapter(ViewPager pages){
this.pages = pages;
}
@Override
public Object instantiateItem(View collection, int position){
View v = pages.get(position);
((ViewPager) collection).addView(v, 0);
return v;
}
@Override
public void destroyItem(View collection, int position, Object view){
((ViewPager) collection).removeView((View) view);
}
@Override
public int getCount(){
return pages.size();
}
[/syntax]
[syntax=java]
public class SamplePagerAdapter extends PagerAdapter{
ViewPager pages = null;
public SamplePagerAdapter(ViewPager pages){
this.pages = pages;
}
@Override
public Object instantiateItem(View collection, int position){
View v = pages.get(position);
((ViewPager) collection).addView(v, 0);
return v;
}
@Override
public void destroyItem(View collection, int position, Object view){
((ViewPager) collection).removeView((View) view);
}
@Override
public int getCount(){
return pages.size();
}
[/syntax]
Re: Урок 125. ViewPager
Спасибо конечно. Но я делал по уроку и у меня адаптер совсем другой:
[syntax=java]
private class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PageFragment.newInstance(position);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
}
[/syntax]
И что делать с этим адапретор не представляю)
[syntax=java]
private class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return PageFragment.newInstance(position);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
}
[/syntax]
И что делать с этим адапретор не представляю)