安卓基礎學習 Day25 |Fragment
技術標籤:學習日誌
目錄
寫在前面的話
1、主要參考自:https://b23.tv/9q3R75
2、內容如果有不對的,希望可以指出或補充。
3、新知識。
一、概述
Fragment(碎片):主要是為了提高頁面間的切換效率。是一種(必須)嵌入在Activity中
的UI片段,與Activity非常相似,不僅包含佈局,同時也具有自己的生命週期,但受Activity的生命週期所影響,也就是說Activity停止的時候,Activity中所有的Fragment都會被停止。一個Activity可以有多個Fragment,一個Fragment可以被多個Activity重用。
使用Fragment可以把螢幕劃分成幾塊,然後進行分組,進行模組化管理。
建議一個App使用一個Activity包含多個Fragment的形式來實現。
生命週期(轉↓):
一般,至少需要實現這幾個生命週期方法:onCreate()、onCreateView()、onPause()
二、建立
注意:因為Fragment是Android3.0版本後引入的,所以minSdk需要大於11。
1、基於模板建立-Fragment類、fragment佈局(fragment顯示內容的)
在Activity(活動)存在的前提中。
彈出的視窗。
2、建立
在Activity中使用Fragment時,可以通過兩種方式(一種是通過佈局檔案、一種是通過程式碼)
靜態載入一旦新增就不能在執行時刪除。
① 在activity佈局檔案裡宣告fragment-靜態
② 通過java程式碼將fragment新增到對應佈局中-動態
三、測試-滑動切換介面
功能:實現三個介面進行滑動切換。
1、【基於模板建立】三個Frament(Fragment1和fragment_1、Fragment2和fragment_2、Fragment3和fragment_3),其中佈局如下(其餘兩個同理)。
2、在主佈局中設定如下。
3、MainActivity.java
package com.example.testfragment;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List<Fragment> fragmentList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取控制元件
ViewPager viewPager = findViewById(R.id.viewpager);
//使用ViewPager需要介面卡
//建立集合
fragmentList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
fragmentList.add(new Fragment1());
fragmentList.add(new Fragment2());
fragmentList.add(new Fragment3());
}
//介面卡
//getSupportFragmentManager碎片管理器
FragAdapter adapter = new FragAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
}
public class FragAdapter extends FragmentPagerAdapter{
public FragAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);//到集合中獲取到資料
}
@Override
public int getCount() {
return fragmentList.size();
}
}
}
4、效果如下