Bu dersimizde fragmentleri kullanarak viewpager uygulaması yapacağız. Bunu yaparken oluşturacağımız adapter sınıfını FragmentPagerAdapter’den üretiyoruz. Daha sonra bunu FragmentStatepagerAdapter’dan üreteceğiz. Aralarında ufak ama önemli bir fark var.
FragmentPagerAdapter fragmenti sadece detach eder, yani layoutunu destroy eder ama tam olarak hafızadan silmez (remove etmez). Ama fragmentstatepager kllanırsak ilgili fragment kullanılmıyorsa hafızadan silinir yani removeedilir. Bu yüzden bu sınıfı kullanmak hafıza ve sistem kaynakları için daha iyidir.
Tüm projeyi indirmek için lütfen burayı tıklayınız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager viewPager= (ViewPager) findViewById(R.id.viewPager); CustomAdapter adapter=new CustomAdapter(getSupportFragmentManager()); viewPager.setAdapter(adapter); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<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" android:layout_margin="10dp"/> </LinearLayout> |
1 2 3 4 5 6 7 8 9 10 11 |
public class FragmentOne extends Fragment { public FragmentOne() { Log.i("EMRE", "Fragment One Oluşturuldu"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_one, container, false); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/holo_purple"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="BİR" android:textSize="40sp" android:textStyle="bold"/> </RelativeLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
class CustomAdapter extends FragmentStatePagerAdapter{ private final int ITEMS= 6; public CustomAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch (position){ case 0: return new FragmentOne(); case 1: return new FragmentTwo(); case 2: return new FragmentThree(); case 3: return new FragmentFour(); case 4: return new FragmentFive(); case 5: return new FragmentSix(); default: return new FragmentOne(); } } @Override public int getCount() { return ITEMS; } } |