這篇文章主要介紹“Fragment組件怎么用”,在日常操作中,相信很多人在Fragment組件怎么用問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Fragment組件怎么用”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
創(chuàng)新互聯(lián)公司專注于集安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供集安營(yíng)銷型網(wǎng)站建設(shè),集安網(wǎng)站制作、集安網(wǎng)頁(yè)設(shè)計(jì)、集安網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造集安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供集安網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
一、Fragment與Activity的關(guān)系
要理解動(dòng)態(tài)管理Fragment首先要理解一下Fragment與Activity的關(guān)系
Fragment可以理解為將Activity劃分為若干個(gè)片段,F(xiàn)ragment是Activity的一部分,生命周期是依賴Activity的,是不能單獨(dú)存在的。這樣不難理解所有Fragment的管理(查找、添加、刪除、替換)都應(yīng)該在Fragment所依賴的Activity中進(jìn)行,也就是Activity才是Fragment交互的場(chǎng)所,不要試圖在一個(gè)Fragment中去管理另一個(gè)Fragment雖然也可以實(shí)現(xiàn)要求的功能但是不符合規(guī)范的。要完成對(duì)Fragment的具體操作需要使用FragmentManager組件。
二、使用FragmentManager組件
使用FragmentManager組件的關(guān)鍵代碼如下:
//1、創(chuàng)建FragmentManager組件 FragmentManager fm=super.getSupportFragmentManager(); //2、查詢方法,獲得Activity中某一個(gè)Fragment fm.findFragmentById(R.id.fooler) fm.findFragmentByTag(”tagName”) //3、動(dòng)態(tài)添加Fragment fm.beginTransaction().add(R.id.content,contentFragment,"content").commit(); //4、替換Fragment fm.beginTransaction().replace(R.id.OldFragment, newFragment).commit(); //5、刪除Fragment fm.beginTransaction().remove(R.id.myFragment).commit(); //6、向Fragment傳遞數(shù)據(jù) f.setArguments(Bundle )方法傳遞數(shù)據(jù)
上述管理Fragment代碼應(yīng)組織在Fragment所屬的Activity中去,下面就通過(guò)一個(gè)案例來(lái)看看具體實(shí)現(xiàn).
三、實(shí)現(xiàn)案例
首先看一下本次的應(yīng)用案例(如圖所示),當(dāng)單擊底部***個(gè)區(qū)域和第二區(qū)域時(shí)實(shí)現(xiàn)中心區(qū)域的切換
界面分析:有三個(gè)區(qū)域 :頭部區(qū)域TitleFragment,中心區(qū)域是一個(gè)FrameLayout布局通過(guò)代碼動(dòng)態(tài)加載ContentFragment,底部區(qū)域FloorFragment
1、Activity的布局如下
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/fgTitle" android:layout_width="match_parent" android:layout_height="45dp" android:name="com.jereh.android.course.fragment.TitleFragment" /> <FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/fgTitle" /> <fragment android:id="@+id/floor" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal" android:name="com.jereh.android.course.fragment.FloorFragment" /> </RelativeLayout> 復(fù)制代碼 2、FloorFragment代碼 復(fù)制代碼 public class FloorFragment extends Fragment implements OnClickListener { @Override public void onAttach(Activity activity) { super.onAttach(activity); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.floor_fragment, container,false); LinearLayout home=(LinearLayout)view.findViewById(R.id.home); LinearLayout list=(LinearLayout)view.findViewById(R.id.list); home.setOnClickListener(this); list.setOnClickListener(this); return view; } //定義接口,該接口在Activity中去實(shí)現(xiàn),降低Activity與Fragment的耦合度 public interface OnContentFragmentListener{ void setContentFragment(String param); } private OnContentFragmentListener onContentFragmentListener; public void setOnContentFragmentListener( OnContentFragmentListener onContentFragmentListener) { this.onContentFragmentListener = onContentFragmentListener; } @Override public void onClick(View view) { // TODO Auto-generated method stub if(onContentFragmentListener!=null){ switch(view.getId()){ case R.id.home: //回調(diào)機(jī)制,調(diào)用實(shí)現(xiàn)類的方法 onContentFragmentListener.setContentFragment("主面板Fragment"); break; case R.id.list: onContentFragmentListener.setContentFragment("列表信息"); break; } } } } 3、ContentFragment代碼
public class ContentFragment extends Fragment { private String title; public void setArguments(Bundle args) { title=args.getString("title"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.content_fragment, container,false); if(title!=null)((TextView)view.findViewById(R.id.tvContent)).setText(title); return view; } }
4、DynaFragmentActivity代碼
public class DynaFragmentActivity extends FragmentActivity implements FloorFragment.OnContentFragmentListener { private ContentFragment contentFragment; private FloorFragment floor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.dyna_fragment_activity); initFragment(); } private void initFragment(){ floor=(FloorFragment)super.getSupportFragmentManager().findFragmentById(R.id.floor); floor.setOnContentFragmentListener(this);//注冊(cè)偵聽(tīng),傳入實(shí)現(xiàn)類對(duì)象 contentFragment=new ContentFragment(); FragmentManager fm=super.getSupportFragmentManager(); fm.beginTransaction().add(R.id.content,contentFragment,"content").commit(); } public void setFragment(Fragment fragment){ getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commit(); } @Override public void setContentFragment(String param) { // TODO Auto-generated method stub Bundle bundle=new Bundle(); bundle.putString("title", param); contentFragment=new ContentFragment(); contentFragment.setArguments(bundle); super.getSupportFragmentManager().beginTransaction() .replace(R.id.content, contentFragment).commit(); } }
到此,關(guān)于“Fragment組件怎么用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
網(wǎng)頁(yè)題目:Fragment組件怎么用
新聞來(lái)源:http://m.newbst.com/article26/jicpjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、響應(yīng)式網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站設(shè)計(jì)、小程序開(kāi)發(fā)、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)