Публикации - Mobile Operating Systems

Android - Fragments

Благодаря фрагментам мы можем разбивать шаблон на подшаблоны.

В папке layout приложения создаем файл представления fragment1.xml и добавим в него две кнопки:

fragment1.xml. Листинг 1.

xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

<Button

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/b1"

android:text="Кнопка 1"/>

<Button

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/b2"

android:text="Кнопка 2"/>

LinearLayout>

Создаем в этой же папке еще один файл fragment2.xml и добавляем в него два переключателя:

fragment2.xml. Листинг 1.

xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

<RadioButton

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/rb"

android:text="Переключатель 1"/>

<ToggleButton

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:id="@+id/tb"/>

LinearLayout>

И еще одно представление фрагмента.

Fragment3.xml. Листинг 1.

xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/iv"

android:src="@drawable/ic_launcher"

android:layout_gravity="center"/>

LinearLayout>

Теперь примемся за создание самих фрагментов, они имеют расширение java. В папке, хранящей файл MainActivity.java создаем новый пакет с именем fragments:

В этом пакете fragments создаем 3 файла java класса: fragment1, fragment2, fragment3.

Добавим в файл fragment1.java наследование класса Fragment, вместо метода onCreate в этом случае используют onCreateView, зададим внешний вид класса с созданного раньше layout - файла fragment1.xml:

Класс fragment1. Листинг 1.

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import home.study.R;

public class fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
container, @Nullable Bundle savedInstanceState) {

//Устанавливаем нашему классу внешний вид с fragment1.xml:
View frag1 = inflater.inflate(R.layout.fragment1,container,false);
return frag1;
}
}

Открываем файл fragment2 и делаем аналогично:

Класс fragment2. Листинг 1.

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import home.study.R;

public class fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable
ViewGroup container, @Nullable Bundle savedInstanceState) {
//Устанавливаем нашему классу внешний вид с fragment2.xml:
View frag2 = inflater.inflate(R.layout.fragment2,container,false);
return frag2;
}
}

В классе fragment3 аналогично подключим подшаблон fragment3.xml.

Класс fragment3. Листинг 1.

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import home.study.R;

public class fragment3 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable
ViewGroup container, @Nullable Bundle savedInstanceState) {

//Устанавливаем нашему классу внешний вид с fragment3.xml:
View frag3 = inflater.inflate(R.layout.fragment3,container,false);
return frag3;
}
}

Для вставки созданных фрагментов в главный файл шаблона activity_main.xml воспользуемся элементом :

Вставка фрагментов. Листинг 1.

xml version="1.0" encoding="utf-8"?>

 

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

xmlns:tools="http://schemas.android.com/tools">

<fragment

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:name="home.study.fragments.fragment1"

tools:layout="@layout/fragment1"/>

<fragment

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:name="home.study.fragments.fragment2"

tools:layout="@layout/fragment2"/>

<fragment

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:name="home.study.fragments.fragment3"

tools:layout="@layout/fragment3"/>

LinearLayout>

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться