Android PagerView между активностями - PullRequest
7 голосов
/ 24 марта 2012

У меня есть пять видов деятельности / экранов, между которыми я хотел бы провести пальцем, у каждого из которых есть разные функции, но они взаимосвязаны, следовательно, концепция пользовательского интерфейса пролистывает между ними.

Я нашел много обсуждений вокруг ViewPager, PagerAdapters и т. Д., Но не могу найти ни одного, где быстрая переключение между различными экранами активности.

Это вообще возможно? Может ли кто-нибудь указать мне на пример этого проекта с исходным кодом? Или покажи мне, как адаптировать существующий учебник, чтобы делать то, что я хочу?

Большое спасибо, хорошего!

Ответы [ 2 ]

27 голосов
/ 24 марта 2012

Вы не можете использовать ViewPager, чтобы провести между Activities.Вам нужно конвертировать каждого из вас пять Activities в Fragments, а затем объединить все в одном FragmentActivity с Adapter, который вы используете с ViewPager.

Вот ссылка это подробно описывает преобразование вашей текущей Activities информации Fragments.

Это тема фрагмента на веб-сайте разработчиков Android, в ней много полезной информации.

Вот еще один пример (полный источник), который раздувает TextViews на каждой странице.

Вот пример, который я напечатал:

PagerAdapter :

public class PagerAdapter extends FragmentPagerAdapter {

    private final List<Fragment> mFragments = new ArrayList<Fragment>();

    public PagerAdapter(FragmentManager manager) {
        super(manager);
    }

    public void addFragment(Fragment fragment) {
        mFragments.add(fragment);
        notifyDataSetChanged();
    }

    @Override
    public int getCount() {
        return mFragments.size();
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }
}

Это следует называть onCreate вашего FragmentActivity:

    private void initPaging() {

    FragmentOne fragmentOne = new FragmentOne();
    FragmentTwo fragmentTwo= new FragmentTwo();

    PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
    pagerAdapter.addFragment(fragmentOne);
    pagerAdapter.addFragment(fragmentTwo);

    ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
    viewPager.setAdapter(pagerAdapter);
}

ЭтоПример макета, который вы использовали бы для FragmnetActivity:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

Для создания Fragment создайте новый класс, который расширяет Fragment.Первые два метода, которые вы захотите override: onActivityCreated и onCreateView.

Вот как это можно сделать:

public class FragmentOne extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(THE_LAYOUT_FROM_YOUR_ORIGINAL_ACTIVITY, container, false);
    return view;
    }
}
2 голосов
/ 04 апреля 2013

Исправление для mPageradapter

    PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
    pagerAdapter.addFragment(fragmentOne);
    pagerAdapter.addFragment(fragmentEvents);

    viewPager = (ViewPager) super.findViewById(R.id.pager);
    viewPager.setAdapter(pagerAdapter);
...