免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Fragment怎么在Android中使用

Fragment怎么在Android中使用?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到廣安網(wǎng)站設(shè)計(jì)與廣安網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋廣安地區(qū)。

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

Fragment怎么在Android中使用

本文主要介紹了關(guān)于Android中Fragment的基本用法,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(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不可以,原因見(jiàn)①

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

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

add 和 replace 千萬(wàn)不要混合使用,否則會(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();

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

二、回滾操作

最常用:依次回滾

 @Override
 public void onBackPressed() {
 if (getSupportFragmentManager().getBackStackEntryCount() <= 1) { //這里是取出我們返回棧存在Fragment的個(gè)數(shù)
  finish();
 } else { //取出我們返回棧保存的Fragment,這里會(huì)從棧頂開(kāi)始彈棧
  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)來(lái)了,在fragment里面加載fragment 顯示問(wèn)題

1.顯示不出來(lái):

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

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)擊事件透?jìng)?/strong>

①如果加載的fragment的布局為ScrollView,不會(huì)發(fā)生透?jìng)魇录?/p>

②如果存在透?jìng)魇录趂ragment的根布局加上android:clickable="true" ,即可簡(jiǎn)單粗暴的解決點(diǎn)擊事件穿透的問(wèn)題

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

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

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

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

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

網(wǎng)站標(biāo)題:Fragment怎么在Android中使用
本文地址:http://m.newbst.com/article2/gohhic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化定制網(wǎng)站電子商務(wù)網(wǎng)站導(dǎo)航Google手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)