Поиск…


замечания

Фрагменты - очень важные компоненты пользовательского интерфейса в приложениях для Android. Они были впервые представлены в Android 3.0 (Honeycomb) API.


Понимание парадигмы дизайна фрагментов

Фрагменты были введены, прежде всего, для поддержки модульного и гибкого интерфейса на устройствах с большим экраном, таких как планшеты.

Фрагменты управляются действием. Обычно каждый фрагмент представляет часть экрана. В деятельности может быть более одного фрагмента. Фрагменты также можно назвать вспомогательными . Когда вы добавляете фрагмент как часть вашего макета активности, он живет в ViewGroup внутри иерархии представлений активности, а фрагмент определяет свой собственный макет представления.


ЖИЗНЕННЫЙ ЦИКЛ

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

  1. Присоединяйтесь к деятельности - onAttach (Activity)
  2. Создать фрагмент - onCreate (Bundle)
  3. Создать представление - onCreateView (LayoutInflater, ViewGroup, Bundle)
  4. Создание активности - onActivityCreated (Bundle)
  5. Просмотреть состояние восстановлено - onViewStateRestored (Bundle)
  6. Сделано видимым для пользователя - onStart ()
  7. начало взаимодействия с пользователем - onResume ()
  8. пауза взаимодействия с пользователем - onPause ()
  9. Сделано невидимым для пользователя - onStop ()
  10. При уничтожении зрения - onDestroyView ()
  11. Уничтожить фрагмент - onDestroy ()
  12. Отделитесь от действия - onDetach ()

Как программист, вы должны переопределить различные методы обратного вызова жизненного цикла, как правило, мы реализуем методы onCreate (), onCreateView () и onPause ().


Подклассы фрагмента

  1. DialogFragment - для отображения плавающего диалога
  2. ListFragment - для отображения списка элементов
  3. PreferenceFragment - полезный для создания настроек активности

Рекомендации

  1. https://developer.android.com/guide/components/fragments.html
  2. https://developer.android.com/reference/android/app/Fragment.html

Добавление фрагментов

Добавление фрагмента статически

Файл: activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent" >  
  
    <fragment  
        android:id="@+id/fragment2"  
        android:name="com.example.fragmentexample.Fragment2"  
        android:layout_width="0px"  
        android:layout_height="match_parent"   
        android:layout_weight="1"  
        />  
  
    <fragment  
        android:id="@+id/fragment1"  
        android:name="com.example.fragmentexample.Fragment1"  
        android:layout_width="0px"  
        android:layout_height="match_parent"  
        android:layout_weight="1"  
         />  
  
</LinearLayout>  

Файл: fragment1.xml

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical"  
    android:background="#00ff00"  
     >  
  
    <TextView  
        android:id="@+id/textView1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="fragment frist"  
        android:textAppearance="?android:attr/textAppearanceLarge" />  
  
</LinearLayout>  

Файл: fragment2.xml

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical"  
    android:background="#0000ff"  
     >  
  
    <TextView  
        android:id="@+id/textView1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:text="Second Fragment"  
        android:textAppearance="?android:attr/textAppearanceLarge" />  
  
</LinearLayout>

Файл: MainActivity.java

package com.example.fragmentexample;  
  
import android.os.Bundle;  
import android.app.Activity;  
import android.view.Menu;  
public class MainActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
    }  
}  

Файл: Fragment1.java

package com.example.fragmentexample;  
  
import android.app.Fragment;  
import android.os.Bundle;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
  
public class Fragment1 extends Fragment {  
    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
            Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        return inflater.inflate(R.layout.fragment1,container, false);  
    }  
  
}  

Файл: Fragment2.java

package com.example.fragmentexample;  
  
import android.app.Fragment;  
import android.os.Bundle;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
  
public class Fragment2 extends Fragment {  
      
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
            Bundle savedInstanceState) {  
        // TODO Auto-generated method stub  
        return inflater.inflate(R.layout.fragment2,container, false);  
    }  
  
}  

Динамическое добавление фрагмента

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent" >  
  
    <FrameLayout  
        android:id="@+id/container1"   
        android:layout_width="0px"  
        android:layout_height="match_parent"   
        android:layout_weight="1"  
        />  
  
    <FrameLayout  
        android:id="@+id/container2"   
        android:layout_width="0px"  
        android:layout_height="match_parent"  
        android:layout_weight="1"  
         />  
  
</LinearLayout>

FrameLayout действует как контейнер фрагментов.

Класс MainActivity

Файл: MainActivity.java

package com.example.fragmentexample;  
  
import android.os.Bundle;  
import android.app.Activity;  
import android.view.Menu;  
public class MainActivity extends Activity {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        loadFragment(this, R.id.container1,new Fragment1(),"fragment1");
        loadFragment(this, R.id.container2,new Fragment2(),"fragment2");    
    }  

    public static void loadFragment(Activity activity, int containerId, Fragment fragment, String tag)
    {
        activity.getSupportFragmentManager().beginTransaction().
            replace(containerId, fragment,tag).commitAllowingStateLoss();
    }
}  


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow