Fragment
- это модульный раздел Деятельности, который имеет собственный жизненный цикл, имеет свои собственные макеты, представления .., (своего рода «вспомогательное действие»)
Еще одно очевидное преимущество использования фрагментов, оптимизация пользовательского интерфейса на разных экранах, позволяет управлять несколькими страницами за одно действие.
Теперь выполните следующие действия:
Создайте свой основной Acitivy расширяет FragmentActivity
:
public class MainActivity extends FragmentActivity {
...
}
Измените основной макет деятельности на что-то вроде этого:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.yourComp.appName.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/body"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_above="@id/footer" />
<LinearLayout
android:id="@+id/footer"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal" />
</RelativeLayout>
Создайте новый FragmentPagerAdapter , как показано ниже, я определяю 3 страницы, но вы можете изменить это, помните, что вы должны создать один фрагмент вместо каждого действия, которое вам нужно :
public class FragmentAdapter extends FragmentPagerAdapter {
static final int NUMBER_OF_PAGES = 3;
Context context;
public FragmentAdapter(android.support.v4.app.FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
@Override
public int getCount() {
return NUMBER_OF_PAGES;
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
default:
return null;
}
}
}
Теперь перейдите в Android Studio, нажмите Файл> Создать> Фрагмент> Фрагмент (пусто) и создайте фрагменты, перечисленные в FragmentAdapter
ранее. Это фрагментов работает вместо ваших действий.
Наконец, добавьте эти строки в основной метод Activity, метод OnCreate, цель которого - связать фрагменты, которые были объявлены ранее, с помощью viewPager в основном макете деятельности:
ragmentAdapter = new FragmentAdapter(((FragmentActivity) this).getSupportFragmentManager(), this);
ViewPager pager = (ViewPager) findViewById(R.id.body);
viewPager.setAdapter(fragmentAdapter);
Теперь создайте свой собственный вид нижнего колонтитула или используйте BottomNavigationView . Пользователи могут перемещаться между фрагментами или программно изменять страницы, используя этот метод:
viewPager.setCurrentItem(n); // n is fragment number that decleared in adapter 0,1,2
Кроме того, вы можете отключить ручное сканирование, как описано здесь .