最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android中Fragment的基本用法示例總結(jié)

 更新時(shí)間:2018年05月07日 10:27:26   作者:loading  
Fragment是activity的界面中的一部分或一種行為,下面這篇文章主要給大家介紹了關(guān)于Android中Fragment的基本用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

fragment 可認(rèn)為是一個(gè)輕量級(jí)的Activity,但不同與Activity,它是要嵌到Activity中來使用的,它用來解決設(shè)備屏幕大小的不同,主要是充分利用界面上的空間,如平板上多余的空間。一個(gè)Activity可以插入多個(gè)Fragment,可以認(rèn)為Fragment就是Activity上的一個(gè)View。

本文主要介紹了關(guān)于Android中Fragment的基本用法,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹吧。

一、fragment管理

在activity動(dòng)態(tài)加載fragment

加載fragment的布局不限,并不局限于FrameLayout

加載方法:(只有導(dǎo)入的fragment是v4包,才有g(shù)etSupportFragmentManager())

 FragmentA fragment = new FragmentA();
 getSupportFragmentManager().beginTransaction()
  .add(R.id.XXX, fragment, "fragment")
//  .addToBackStack("") //加入回退棧
  .commit;

或者

FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction transaction = manager.beginTransaction(); 
transaction.add(R.id.fragment_container, fragment, "fragment"); 
transaction.commit(); 

但是第二種方法要注意,導(dǎo)包須一致

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;

而除了使用add方法,我們也可以使用replace方法添加fragment

FragmentA fragment = new FragmentA();
getSupportFragmentManager().beginTransaction()
 .replace(R.id.XXX, fragment,"fragment")
 .commit();

add和replace的區(qū)別是:

①add 是往container容器里堆加fragment View;replace是將container容器里之前添加的View全部清除,然后再添加當(dāng)前fragment View

一定要記住,replace清除的是container的視圖,而不是fragment實(shí)例, remove移除的才是fragment實(shí)例

②add后期可以使用show,hide操作,但是replace不可以,原因見①

③使用add,回滾時(shí),fragment不會(huì)重新加載,曾經(jīng)的操作痕跡還存在,使用replace回滾時(shí),之前的fragment會(huì)重新加載,原因見①

使用add的時(shí)候還有一點(diǎn)需要注意的是,視圖重疊的問題,記得設(shè)置背景色

add 和 replace 千萬不要混合使用,否則會(huì)出錯(cuò)

在進(jìn)行remove,hide,show之前要記得判斷fragment.isAdded();下面的代碼我就不提示了

移除fragment實(shí)例

 Fragment fragment = getSupportFragmentManager().findFragmentByTag("fragment");
 getSupportFragmentManager().beginTransaction()
  .remove(fragment)
  .commit();

隱藏fragment

 Fragment fragment = getSupportFragmentManager().findFragmentByTag("fragment");
 getSupportFragmentManager().beginTransaction()
  .hide(fragment)
  .commit();

顯示fragment

 Fragment fragment = getSupportFragmentManager().findFragmentByTag("fragment");
 getSupportFragmentManager().beginTransaction()
  .show(fragment)
  .commit();

拓展:

在fragment里刷新(即從頭加載fragment數(shù)據(jù),且不影響后續(xù)的回退棧)

Fragment replaceFragment = getActivity().getSupportFragmentManager().findFragmentByTag("first_fragment");
    getActivity().getSupportFragmentManager().beginTransaction()
    .detach(replaceFragment)
    .attach(replaceFragment)
    .commit();

簡單的講,detach是銷毀View,而不是fragment實(shí)例,attach是重建視圖View,attach后的視圖會(huì)位于視圖最前面,具體的可以自己去查看資料

二、回滾操作

最常用:依次回滾

 @Override
 public void onBackPressed() {
 if (getSupportFragmentManager().getBackStackEntryCount() <= 1) { //這里是取出我們返回棧存在Fragment的個(gè)數(shù)
  finish();
 } else { //取出我們返回棧保存的Fragment,這里會(huì)從棧頂開始彈棧
  getSupportFragmentManager().popBackStack();
 }
 }

拓展:指定回滾

void popBackStack(String name, int flags); 

參數(shù)string name是transaction.addToBackStack(String tag)中的tag值;

至于int flags有兩個(gè)取值:0或FragmentManager.POP_BACK_STACK_INCLUSIVE;

      當(dāng)取值0時(shí),表示除了參數(shù)一指定這一層之上的所有層都退出棧,指定的這一層為棧頂層;

      當(dāng)取值POP_BACK_STACK_INCLUSIVE時(shí),表示連著參數(shù)一指定的這一層一起退出棧;

退回棧頂:

while (getSupportFragmentManager().getBackStackEntryCount()>1) {
 getSupportFragmentManager().popBackStackImmediate();
}

三、重點(diǎn)來了,在fragment里面加載fragment 顯示問題

1.顯示不出來:

加載fragment的布局不要使用LinearLayout,不要使用LinearLayout,不要使用LinearLayout,重要的事情說三遍,否則很有可能加載的fragment顯示不出來

2.顯示不完全:在onCreateView使用方式一,不要使用方式二

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
 // 方式一
 View view = inflater.inflate(R.layout.XXX, container, false);
  // 方式二
// View view = inflater.inflate(R.layout.XXX, null);
 return view;
 }

3.點(diǎn)擊事件透傳

①如果加載的fragment的布局為ScrollView,不會(huì)發(fā)生透傳事件

②如果存在透傳事件,在fragment的根布局加上android:clickable="true" ,即可簡單粗暴的解決點(diǎn)擊事件穿透的問題

4.獲取回退棧中fragment的數(shù)量

方式一:activity如繼承FragmentActivity,可通過getSupportFragmentManager().getBackStackEntryCount()判斷activity中棧內(nèi)已存的fragment的數(shù)量,不包括通過方式二加載進(jìn)去的fragment(在fragment中加載子fragment)

方式二:此方式是在fragment中通過getChildFragmentManager().getBackStackEntryCount()判斷此fragment棧內(nèi)已存的fragment的數(shù)量

getChildFragmentManager().beginTransaction()
 .replace(R.id.XXX, fragment)
 .addToBackStack(null)
 .commit();

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • Android?模擬地圖定位功能的實(shí)現(xiàn)

    Android?模擬地圖定位功能的實(shí)現(xiàn)

    這篇文章主要介紹了Android?模擬地圖定位功能的實(shí)現(xiàn),本工程利用手機(jī)自帶的"模擬位置"功能實(shí)現(xiàn)運(yùn)行時(shí)修改LocationManager結(jié)果,需要的朋友可以參考一下
    2022-02-02
  • Android 中讀取Excel文件實(shí)例詳解

    Android 中讀取Excel文件實(shí)例詳解

    這篇文章主要介紹了Android 中讀取Excel文件實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Android ScrollView取消慣性滾動(dòng)的方法

    Android ScrollView取消慣性滾動(dòng)的方法

    下面小編就為大家?guī)硪黄狝ndroid ScrollView取消慣性滾動(dòng)的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android WaveView實(shí)現(xiàn)水流波動(dòng)效果

    Android WaveView實(shí)現(xiàn)水流波動(dòng)效果

    這篇文章主要介紹了 Android自定義控件 WaveView實(shí)現(xiàn)水流波動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Android?Studio?2022.1.1創(chuàng)建項(xiàng)目的Gradle配置問題

    Android?Studio?2022.1.1創(chuàng)建項(xiàng)目的Gradle配置問題

    這篇文章主要介紹了Android?Studio?2022.1.1創(chuàng)建項(xiàng)目的Gradle配置問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Android接收和發(fā)送短信處理

    Android接收和發(fā)送短信處理

    這篇文章主要介紹了Android接收和發(fā)送短信處理的相關(guān)資料,具有一定的參考價(jià)值,需要的朋友可以參考下
    2016-01-01
  • 用Flutter開發(fā)自定義Plugin的方法示例

    用Flutter開發(fā)自定義Plugin的方法示例

    這篇文章主要介紹了用Flutter開發(fā)自定義Plugin的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • Android用戶注冊(cè)界面

    Android用戶注冊(cè)界面

    這篇文章主要介紹了Android用戶注冊(cè)界面 的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • Android三種常見的圖片壓縮方式

    Android三種常見的圖片壓縮方式

    在開發(fā)中,我們經(jīng)常有這樣一種需求,從相冊(cè)選擇圖片,上傳到服務(wù)器。隨著手機(jī)像素的不斷提升,照片也是小一點(diǎn)的3,4兆,大一點(diǎn)的多大10多兆。如果直接上傳原圖,會(huì)增大服務(wù)器壓力,所以,在上傳之前對(duì)圖片壓縮就顯得很必要了。
    2021-05-05
  • Android列表選擇框Spinner使用方法詳解

    Android列表選擇框Spinner使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Android列表選擇框Spinner的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02

最新評(píng)論

阆中市| 德庆县| 辽宁省| 临邑县| 镇巴县| 娱乐| 奉新县| 吉木萨尔县| 咸宁市| 汉川市| 抚州市| 镇远县| 阿图什市| 东丽区| 南靖县| 威远县| 万荣县| 桐城市| 阳春市| 新绛县| 九江县| 炎陵县| 西贡区| 香港 | 眉山市| 衢州市| 富裕县| 常宁市| 岳池县| 田林县| 鄂州市| 札达县| 西城区| 和顺县| 徐水县| 安多县| 长沙市| 壤塘县| 南乐县| 牙克石市| 乌恰县|