Компьютерапия

    • Офис
      • MS Excel
      • MS Word
      • MS PowerPoint
      • MS Access
    • Веб
      • Joomla
      • WordPress
      • Сайтостроение
      • Уроки HTML
      • Bootstrap 3
      • Web Разработка
      • Web Сервисы и Службы
      • Основы AJAX
      • Изучаем AngularJS
      • Основы CSS
    • Программер
      • Android
      • VBA
      • Основы php
      • JavaScript
      • Основы Arduino
    • Полезные книги
      • Android
      • Assembler
      • Excel
      • linux
      • CSS
      • Delphi
      • Java
      • JavaScript
      • Joomla
      • Web
      • PHP
      • Unity
    • Полезные советы
      • Установки на Virtualbox
      • Продвижение YouTube канала
      • Как заказывать товары на AliExpress
    • Видео уроки
      • Уроки Word
      • Уроки Excel
      • Уроки сайтостроения
      • Уроки Joomla 3
      • Уроки Android
      • Уроки WordPress
      • Полезные советы
      • Уроки PowerPoint
      • Основы Arduino
      • Основы MacOS
      • Основы Vbox
      • Основы Python
    • Блог
    Android
    19 ноября 2017
    11 апреля 2026
    Просмотров: 15910

    Создание фрагментов и использование вкладок для Android

    Сегодня давайте займемся созданием нового приложения в Android Studio 3.0, будем использовать вкладки и подгружаемые в них фрагменты.

    Фрагменты позволяют встраивание их в активности, вкладки и другие элементы.

    Содержание:

    • Новый проект
    • Ошибки в gradle
    • Макет виджета вкладок
    • Создание новых фрагментов
    • Редактирование MainActivity
    • Полный текст activity_main.xml
    • Полный текст fragment_blank_fragment1.xml
    • Полный текст fragment_blank_fragment2.xml
    • Полный текст fragment_blank_fragment3.xml
    • Полный текст MainActivity.java
    • Полный текст BlankFragment1.java
    • Полный текст BlankFragment2.java
    • Полный текст BlankFragment3.java
    • Смотрите новое видео - Создание фрагментов и использование вкладок для Android:

    Новый проект

    Запустим среду разработки, создадим новый проект MyFragments, макет главной активности -TabbedActivity, стиль навигации - ActionBar Tabs(with View Pager), и нажмем финиш.

      Создание фрагментов и использование вкладок для Android

    Ошибки в gradle

    После обновления Android Studio до версии 3.0 у меня постоянно вылетает ошибка сборки gradle app, ссылается на зависимости test.runner, test.esspresso и не видит support.appcompat и support.design, хотя все элементы SDK отвечают текущим требованиям и обновлены.

    Создание фрагментов и использование вкладок для Android

    Если вы столкнулись с подобными ошибками напишите об этом в комментариях, я же не нашел лучше способа решить проблему, чем удалить тестовые зависимости вообще, а в поддержке support.appcompat и support.design, изменить версию, поставив знак плюс после первой цифры версии. Также я добавил зависимость support-v4, так как в проекте используются некоторые элементы из ранних версий.

    Создание фрагментов и использование вкладок для Android

    Теперь все работает как и было задумано...

    Макет виджета вкладок

    Среда разработки Android создала для нас пустой фрагмент, который мы использовать не будем, закроем его и посмотрим на макет главной активности.
    Он представляет из себя три вкладки виджета TabLayout, содержащие три пункта виджета TabItem, дублируя их можно сделать больше вкладок, чем предложено первоначально. Соответственно удалять их, оставляя меньше двух смысла нет, иначе проще использовать обычную активность.

    Создание фрагментов и использование вкладок для Android

    Создание новых фрагментов

    Запустим эмулятор и посмотрим как будут выглядеть и вести себя вкладки на устройстве. Обратите внимание, что перемещение между вкладками осуществляется двумя способами: нажатием на заголовок вкладки и свайпом.

    Создание фрагментов и использование вкладок для Android

    Создадим наши фрагменты, для этого кликнем правой кнопкой на папке java и в контекстном меню выберем New>Fragment>Fragment(Blank). Отличие от остальных пунктов этого подменю в расположении элементов на фрагменте.

    Создание фрагментов и использование вкладок для Android

    Для удобства я буду присваивать номер к предложенному имени фрагмента (BlankFragment1 и т.д.), сниму галочки с пунктов Include fragment factory metods и Include interface callbacks, которые добавят в java класс методы и интерфейс вызовы, безусловно полезные, но в данном примере нами не используемые.

    Создание фрагментов и использование вкладок для Android

    Сформированный BlankFragment1.java унаследует методы от класса fragment, и содержит одну процедуру onCreateView, запускающую fragment_blank_fragment1, в который добавим RelativeLayout и поместим в него TextView, настроив ширину и высоту элементов.

    Создание фрагментов и использование вкладок для Android

    Для RelativeLayout

    
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    

    для TextView

    
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    

    Переместим TextView ниже и по центру, создадим дополнительно еще два фрагмента аналогичным образом, в них TextView расположим со смещением.

    Создание фрагментов и использование вкладок для Android

    Редактирование MainActivity

    Перейдем или откроем файл MainActivity.java, найдем в нем класс PlaceholderFragment,

    Создание фрагментов и использование вкладок для Android

    сложим весь участок кода в строку и удалим его. В функции getItem закомментируем или удалим строку так:

    
    //return PlaceholderFragment.newInstance(position + 1);
    

    и добавим следующий код ниже:

    
    switch (position){
    case 0:
    BlankFragment1 bf1= new BlankFragment1();
    return bf1;
    case 1:
    BlankFragment2 bf2= new BlankFragment2();
    return bf2;
    case 2:
    BlankFragment3 bf3= new BlankFragment3();
    return bf3;
    default:
    return null;
    }
    

    Данный код определяет, какая вкладка была выбрана, нумерация вкладок начинается с нуля и если, например, это нулевая вкладка, то в будет выполнен код BlankFragment1(), и во вкладку будет встроен фрагмент №1.

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

    Создание фрагментов и использование вкладок для Android

    Полный текст activity_main.xml

    
    <!--?xml version="1.0" encoding="utf-8"?-->
    <android.support.design.widget.coordinatorlayout 
    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/main_content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitssystemwindows="true" 
    tools:context="ru.maxfad.myfragments.MainActivity">
    
        <android.support.design.widget.appbarlayout 
    android:id="@+id/appbar" android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingtop="@dimen/appbar_padding_top" 
    android:theme="@style/AppTheme.AppBarOverlay">
    
            <android.support.v7.widget.toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:layout_weight="1" 
    android:background="?attr/colorPrimary" 
    app:layout_scrollflags="scroll|enterAlways" 
    app:popuptheme="@style/AppTheme.PopupOverlay" 
    app:title="@string/app_name">
    
            </android.support.v7.widget.toolbar>
    
            <android.support.design.widget.tablayout 
    android:id="@+id/tabs" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content">
    
                <android.support.design.widget.tabitem 
    android:id="@+id/tabItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/tab_text_1">
    
                <android.support.design.widget.tabitem 
    android:id="@+id/tabItem2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/tab_text_2">
    
                <android.support.design.widget.tabitem 
    android:id="@+id/tabItem3" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/tab_text_3">
    
            </android.support.design.widget.tabitem>
    </android.support.design.widget.tabitem>
    </android.support.design.widget.tabitem>
    </android.support.design.widget.tablayout>
        </android.support.design.widget.appbarlayout>
    
        <android.support.v4.view.viewpager 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
        <android.support.design.widget.floatingactionbutton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="end|bottom" 
    android:layout_margin="@dimen/fab_margin" 
    app:srccompat="@android:drawable/ic_dialog_email">
    
    </android.support.design.widget.floatingactionbutton>
    </android.support.v4.view.viewpager>
    </android.support.design.widget.coordinatorlayout>
    

    Полный текст fragment_blank_fragment1.xml

    
    <framelayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="ru.maxfad.myfragments.BlankFragment3">
    
        <relativelayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">
    
            <textview 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignparenttop="true" 
    android:layout_centerhorizontal="true" 
    android:layout_margintop="220dp" 
    android:text="@string/hello_blank_fragment" 
    android:id="@+id/textView"></textview>
    
            <button android:id="@+id/button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView" 
    android:layout_centerhorizontal="true" 
    android:layout_margintop="55dp" 
    android:text="Button"></button>
        </relativelayout>
    
    </framelayout>
    

    Полный текст fragment_blank_fragment2.xml

    
    <framelayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="ru.maxfad.myfragments.BlankFragment2">
    
        <relativelayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">
    
            <textview 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignparenttop="true" 
    android:layout_centerhorizontal="true" 
    android:layout_margintop="181dp" 
    android:text="@string/hello_blank_fragment"></textview>
        </relativelayout>
    
    </framelayout>
    

    Полный текст fragment_blank_fragment3.xml

    
    <framelayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="ru.maxfad.myfragments.BlankFragment1">
    
        <relativelayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent">
    
            <textview 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignparentstart="true" 
    android:layout_alignparenttop="true" 
    android:layout_marginstart="114dp" 
    android:layout_margintop="113dp" 
    android:text="@string/hello_blank_fragment"></textview>
        </relativelayout>
    </framelayout>
    

    Полный текст MainActivity.java

    
    package ru.maxfad.myfragments;
    
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.design.widget.TabLayout;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    
    public class MainActivity extends AppCompatActivity {
    
        /**
         * The {@link android.support.v4.view.PagerAdapter} that will provide
         * fragments for each of the sections. We use a
         * {@link FragmentPagerAdapter} derivative, which will keep every
         * loaded fragment in memory. If this becomes too memory intensive, it
         * may be best to switch to a
         * {@link android.support.v4.app.FragmentStatePagerAdapter}.
         */
        private SectionsPagerAdapter mSectionsPagerAdapter;
    
        /**
         * The {@link ViewPager} that will host the section contents.
         */
        private ViewPager mViewPager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            // Create the adapter that will return a fragment for each of the three
            // primary sections of the activity.
            mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
    
            // Set up the ViewPager with the sections adapter.
            mViewPager = (ViewPager) findViewById(R.id.container);
            mViewPager.setAdapter(mSectionsPagerAdapter);
    
            TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
    
            mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
            tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                }
            });
    
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    
        /**
         * A placeholder fragment containing a simple view.
         */
    
    
        /**
         * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
         * one of the sections/tabs/pages.
         */
        public class SectionsPagerAdapter extends FragmentPagerAdapter {
    
            public SectionsPagerAdapter(FragmentManager fm) {
                super(fm);
            }
    
            @Override
            public Fragment getItem(int position) {
                // getItem is called to instantiate the fragment for the given page.
                // Return a PlaceholderFragment (defined as a static inner class below).
                //return PlaceholderFragment.newInstance(position + 1);
    
            switch (position){
    
                case 0:
                    BlankFragment1 bf1 = new BlankFragment1();
                    return  bf1;
                case 1:
                    BlankFragment2 bf2 = new BlankFragment2();
                    return bf2;
                case 2:
                    BlankFragment3 bf3 = new BlankFragment3();
                    return bf3;
                    default:
                        return null;
            }
    
    
    
    
            }
    
            @Override
            public int getCount() {
                // Show 3 total pages.
                return 3;
            }
        }
    }
    

    Полный текст BlankFragment1.java

    
    package ru.maxfad.myfragments;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    
    public class BlankFragment1 extends Fragment {
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.fragment_blank_fragment1, container, false);
        }
    
    
    }
    

    Полный текст BlankFragment2.java

    
    package ru.maxfad.myfragments;
    
    import android.content.Context;
    import android.net.Uri;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    
    
    public class BlankFragment2 extends Fragment {
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.fragment_blank_fragment2, container, false);
        }
    
    
    }
    

    Полный текст BlankFragment3.java

    
    package ru.maxfad.myfragments;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    
    
    public class BlankFragment3 extends Fragment {
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.fragment_blank_fragment3, container, false);
        }
    
    
    }
    

    Создание фрагментов и использование вкладок для Android Studio 3.0(fragment, tabitem, tablayout)


    Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

     С уважением, авторы сайта Компьютерапия

    Понравилось? Поделись этим видео с друзьями!

    Создание фрагментов и использование вкладок для Android Studio 3.0(fragment, tabitem, tablayout)


    Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на видео ВКонтакте, там Вы найдете много интересного, которое выходит достаточно часто. Приятного просмотра!

     С уважением, авторы сайта Компьютерапия

    Понравилось? Поделись этим видео с друзьями!

    Создание фрагментов и использование вкладок для Android Studio 3.0(fragment, tabitem, tablayout)


    Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в Рутубе, там Вы найдете много интересного, которое выходит достаточно часто. Приятного просмотра!

     С уважением, авторы сайта Компьютерапия

    Понравилось? Поделись этим видео с друзьями!

    Tags: android
    Вступайте в группу ВКонтакте

    Свежие записи 2025

    ВПР на Python, без Excel 16 мая 2026
    Python 3 на Android. Запускаем Ping 28 марта 2026
    Блютуз подключение в Android (проект для Arduino). Часть 2 18 января 2025
    Анимация в PowerPoint - (видео) 09 января 2025
    Меняем имена в GoPro 10 18 июля 2023
    YouTube все - ютубКапут - (видео) 20 марта 2022
    Как сделать презентацию в PowerPoint, презентация с нуля в Рower Point 2016 20 февраля 2022
    Как изменять текст в word с помощью языка Python в среде PyCharm Меняем параграфы таблицы и шрифты - (видео) 09 февраля 2022
    Как преобразовать doc в docx на языке python в PyCharm Массовая конвертация старых файлов в docx - (видео) 09 февраля 2022
    Как установить blender 3.0? Покажу два способа, как установить блендер версии 3.0 на свой комп! - (видео) 05 февраля 2022

    ТОП-10 статей 2025

    • 15 лучших эффектов переходов между слайдами в Power Point
    • Функции даты-времени в VBA. Работа с датой и временем
    • Добавление номеров страниц в колонтитул в Word
    • Массивы в VBA: как работать с массивами
    • Сортировка и фильтрация записей в Access
    • Форматирование и настройка оглавления в Word
    • Методы PHP GET и POST, переменная $_REQUEST
    • Создание форм в Access
    • Установка Android Studio, настройка SDK
    • Работа со строками в VBA: InStr, LCASE, UCase, Left, Right, Mid, LTrim, RTrim, Trim, Len, Replace, Space, StrComp, String, StrReverse
    • Офис
      • MS Excel
      • MS Word
      • MS PowerPoint
      • MS Access
    • Веб
      • Joomla
      • WordPress
      • Сайтостроение
      • Уроки HTML
      • Bootstrap 3
      • Web Разработка
      • Web Сервисы и Службы
      • Основы AJAX
      • Изучаем AngularJS
      • Основы CSS
    • Программер
      • Android
      • VBA
      • Основы php
      • JavaScript
      • Основы Arduino
    • Полезные книги
      • Android
      • Assembler
      • Excel
      • linux
      • CSS
      • Delphi
      • Java
      • JavaScript
      • Joomla
      • Web
      • PHP
      • Unity
    • Полезные советы
      • Установки на Virtualbox
      • Продвижение YouTube канала
      • Как заказывать товары на AliExpress
    • Видео уроки
      • Уроки Word
      • Уроки Excel
      • Уроки сайтостроения
      • Уроки Joomla 3
      • Уроки Android
      • Уроки WordPress
      • Полезные советы
      • Уроки PowerPoint
      • Основы Arduino
      • Основы MacOS
      • Основы Vbox
      • Основы Python
    • Блог

    Категории

    • Уроки Word
    • Уроки Excel
    • Уроки PowerPoint
    • Уроки Access
    • Основы Сайтостройения
    • Уроки HTML
    • Уроки Joomla
    • Уроки WordPress
    • Уроки Bootstrap 3
    • Уроки Android
    • Уроки VBA
    • Основы Arduino

    Разное

    • О сайте
    • Полезные советы
    • Скачать книги
    • Карта сайта
    • Правила сайта

    Видео уроки

    • Уроки Word
    • Уроки Excel
    • Уроки сайтостроения
    • Уроки Joomla 3
    • Уроки Android
    • Уроки WordPress
    • Полезные советы
    • Уроки PowerPoint
    • Основы Arduino

    Подпишитесь в соцсетях

    • Канал на RuTube
    • Группа ВКонтакте
    • Группа в Одноклассниках
    • Канал на YouTube
    © 2019 Компьютерапия - Советы и секреты новичкам в области IT технологий: программирование, сайтостроение, уроки HTML, Word, Excel, Android, Open Server, Joomla, WordPress,PowerPoint, Aliexpress, YouTube, Arduino, видеоуроки.. Все права защищены.
    Перепечатка материалов без согласования допустима при наличии dofollow-ссылки на страницу-источник.