Praca z ViewPager i Fragments
Jestem początkującym programistą Androida. Usiłuję obejść ViewPager. Zanim próbowałem pracować z tym przykładem:
http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-horizontal-view-paging/
Miałem działające widoki, ale nie mogłem uzyskać funkcjonalności w tym zakresie i powiedziano mi, że muszę używać fragmentów w ViewPager.
Zamiast tego skorzystałem z tego samouczka:
http://tamsler.blogspot.co.uk/2011/11/android-viewpager-and-fragments-part-ii.html
Mam podstawy ViewPager z działającym fragmentem:
FragmentPagerActivity.java
<code>import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; public class FragmentPagerActivity extends FragmentActivity { private static final int NUMBER_OF_PAGES = 10; private ViewPager mViewPager; private MyFragmentPagerAdapter mMyFragmentPagerAdapter; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mViewPager = (ViewPager) findViewById(R.id.viewpager); mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager()); mViewPager.setAdapter(mMyFragmentPagerAdapter); } private static class MyFragmentPagerAdapter extends FragmentPagerAdapter { public MyFragmentPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int index) { return PageFragment.newInstance("My Message " + index); } @Override public int getCount() { return NUMBER_OF_PAGES; } } } </code>
PageFragment.java:
<code>import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class PageFragment extends Fragment { public static PageFragment newInstance(String title) { PageFragment pageFragment = new PageFragment(); Bundle bundle = new Bundle(); bundle.putString("title", title); pageFragment.setArguments(bundle); return pageFragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment, container, false); TextView textView = (TextView) view.findViewById(R.id.textView1); textView.setText(getArguments().getString("title")); return view; } } </code>
main.xml:
<code><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> </code>
fragment.xml:
<code><?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" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> </LinearLayout> </code>
Chcę być w stanie zastąpić obecny układ w ViewPager 7 własnymi układami, które już istnieją i dodać funkcjonalność do układów za pomocą Fragmentów. Co mogę zrobić z kodem, który już posiadam i zmianami, aby to poprawnie działało?
Jeśli są dostępne przykłady ViewPager z fragmentami dostępnymi w Internecie, a nie tylko krótko, jak w blogu Adroid Developers, będę bardzo wdzięczny.