1. Tạo 3 layout (folder: app/res/layout) với background khác nhau (fragment_1.xml, fragment_2.xml, fragment_3.xml)
-- fragment_1.xml
1 2 3 4 5 6 7 8 |
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="@android:color/holo_green_dark" android:layout_width="match_parent" android:layout_height="match_parent"> </androidx.constraintlayout.widget.ConstraintLayout> |
2. Tạo package fragment (folder: app/java/com.example.testfragment). Sau đó tạo 3 Class tương ứng trong package: Fragment1.class, Fragment2.class, Fragment3.class
-- Fragment1.class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package com.example.fragmenttest.fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import com.example.fragmenttest.R; public class Fragment1 extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_1,container,false); } } |
3. Tạo Class TestFragmentAdapter.class (folder: app/java/com.example.fragmentest)
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 |
package com.example.fragmenttest; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; public class TestFragmentAdapter extends FragmentPagerAdapter { private Fragment[] fragments; public TestFragmentAdapter(@NonNull FragmentManager fm, Fragment ... fragments) { super(fm, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); this.fragments = fragments; } @NonNull @Override public Fragment getItem(int position) { return fragments[position]; } @Override public int getCount() { return fragments.length; } } |
4. Tại MainActivity
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 38 39 40 41 42 43 44 45 46 47 48 |
package com.example.fragmenttest; import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.ViewPager; import android.os.Bundle; import com.example.fragmenttest.fragment.Fragment1; import com.example.fragmenttest.fragment.Fragment2; import com.example.fragmenttest.fragment.Fragment3; import com.google.android.material.tabs.TabLayout; public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener { private ViewPager viewPager; private TestFragmentAdapter testFragmentAdapter; private TabLayout tabLayout; private Fragment1 fragment1 = new Fragment1(); private Fragment2 fragment2 = new Fragment2(); private Fragment3 fragment3 = new Fragment3(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { viewPager = findViewById(R.id.view_page); testFragmentAdapter = new TestFragmentAdapter(getSupportFragmentManager(),fragment1,fragment2,fragment3); viewPager.setAdapter(testFragmentAdapter); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } } |