偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

安卓動態(tài)管理Fragment深入分析:“這幾個組件你知道嗎? ”

移動開發(fā) Android
Fragment可以理解為將Activity劃分為若干個片段,F(xiàn)ragment是Activity的一部分,生命周期是依賴Activity的,是不能單獨存在的。

一、Fragment與Activity的關系

要理解動態(tài)管理Fragment首先要理解一下Fragment與Activity的關系

Fragment可以理解為將Activity劃分為若干個片段,F(xiàn)ragment是Activity的一部分,生命周期是依賴Activity的,是不能單獨存在的。這樣不難理解所有Fragment的管理(查找、添加、刪除、替換)都應該在Fragment所依賴的Activity中進行,也就是Activity才是Fragment交互的場所,不要試圖在一個Fragment中去管理另一個Fragment雖然也可以實現(xiàn)要求的功能但是不符合規(guī)范的。要完成對Fragment的具體操作需要使用FragmentManager組件。

二、使用FragmentManager組件

使用FragmentManager組件的關鍵代碼如下:

  1. //1、創(chuàng)建FragmentManager組件 
  2. FragmentManager fm=super.getSupportFragmentManager(); 
  3. //2、查詢方法,獲得Activity中某一個Fragment 
  4. fm.findFragmentById(R.id.fooler) 
  5. fm.findFragmentByTag(”tagName”) 
  6. //3、動態(tài)添加Fragment 
  7. fm.beginTransaction().add(R.id.content,contentFragment,"content").commit(); 
  8. //4、替換Fragment 
  9. fm.beginTransaction().replace(R.id.OldFragment, newFragment).commit(); 
  10. //5、刪除Fragment 
  11. fm.beginTransaction().remove(R.id.myFragment).commit(); 
  12. //6、向Fragment傳遞數(shù)據(jù) 
  13. f.setArguments(Bundle )方法傳遞數(shù)據(jù)

     

上述管理Fragment代碼應組織在Fragment所屬的Activity中去,下面就通過一個案例來看看具體實現(xiàn).

三、實現(xiàn)案例

首先看一下本次的應用案例(如圖所示),當單擊底部***個區(qū)域和第二區(qū)域時實現(xiàn)中心區(qū)域的切換

界面分析:有三個區(qū)域 :頭部區(qū)域TitleFragment,中心區(qū)域是一個FrameLayout布局通過代碼動態(tài)加載ContentFragment,底部區(qū)域FloorFragment

1、Activity的布局如下

  1. RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2. android:layout_width="match_parent" 
  3. android:layout_height="match_parent"
  4. <fragment android:id="@+id/fgTitle" 
  5. android:layout_width="match_parent" 
  6. android:layout_height="45dp" 
  7. android:name="com.jereh.android.course.fragment.TitleFragment" 
  8. /> 
  9. <FrameLayout android:id="@+id/content" 
  10. android:layout_width="match_parent" 
  11. android:layout_height="match_parent" 
  12. android:layout_below="@id/fgTitle" 
  13. /> 
  14. <fragment android:id="@+id/floor" 
  15. android:layout_width="match_parent" 
  16. android:layout_height="wrap_content" 
  17. android:layout_alignParentBottom="true" 
  18. android:orientation="horizontal" 
  19. android:name="com.jereh.android.course.fragment.FloorFragment" 
  20. /> 
  21. </RelativeLayout> 
  22.  
  23. 復制代碼 
  24. 2、FloorFragment代碼 
  25. 復制代碼 
  26.  
  27. public class FloorFragment extends Fragment implements OnClickListener { 
  28. @Override 
  29. public void onAttach(Activity activity) { 
  30. super.onAttach(activity); 
  31.  
  32. @Override 
  33. public View onCreateView(LayoutInflater inflater, ViewGroup container, 
  34. Bundle savedInstanceState) { 
  35. // TODO Auto-generated method stub 
  36. View view=inflater.inflate(R.layout.floor_fragment, container,false); 
  37. LinearLayout home=(LinearLayout)view.findViewById(R.id.home); 
  38. LinearLayout list=(LinearLayout)view.findViewById(R.id.list); 
  39. home.setOnClickListener(this); 
  40. list.setOnClickListener(this); 
  41. return view; 
  42. //定義接口,該接口在Activity中去實現(xiàn),降低Activity與Fragment的耦合度 
  43. public interface OnContentFragmentListener{ 
  44. void setContentFragment(String param); 
  45. private OnContentFragmentListener onContentFragmentListener; 
  46. public void setOnContentFragmentListener( 
  47. OnContentFragmentListener onContentFragmentListener) { 
  48. this.onContentFragmentListener = onContentFragmentListener; 
  49. @Override 
  50. public void onClick(View view) { 
  51. // TODO Auto-generated method stub 
  52. if(onContentFragmentListener!=null){ 
  53. switch(view.getId()){ 
  54. case R.id.home: 
  55. //回調機制,調用實現(xiàn)類的方法 
  56. onContentFragmentListener.setContentFragment("主面板Fragment"); 
  57. break
  58. case R.id.list: 
  59. onContentFragmentListener.setContentFragment("列表信息"); 
  60. break
3、ContentFragment代碼
  1. public class ContentFragment extends Fragment { 
  2. private String title; 
  3. public void setArguments(Bundle args) { 
  4. title=args.getString("title"); 
  5. @Override 
  6. public View onCreateView(LayoutInflater inflater, ViewGroup container, 
  7. Bundle savedInstanceState) { 
  8. View view=inflater.inflate(R.layout.content_fragment, container,false); 
  9. if(title!=null)((TextView)view.findViewById(R.id.tvContent)).setText(title); 
  10. return view; 
  11. }

     

4、DynaFragmentActivity代碼

  1. public class DynaFragmentActivity extends FragmentActivity implements FloorFragment.OnContentFragmentListener { 
  2. private ContentFragment contentFragment; 
  3. private FloorFragment floor; 
  4. @Override 
  5. protected void onCreate(Bundle savedInstanceState) { 
  6. super.onCreate(savedInstanceState); 
  7. super.setContentView(R.layout.dyna_fragment_activity); 
  8. initFragment(); 
  9. private void initFragment(){ 
  10. floor=(FloorFragment)super.getSupportFragmentManager().findFragmentById(R.id.floor); 
  11. floor.setOnContentFragmentListener(this);//注冊偵聽,傳入實現(xiàn)類對象 
  12. contentFragment=new ContentFragment(); 
  13. FragmentManager fm=super.getSupportFragmentManager(); 
  14. fm.beginTransaction().add(R.id.content,contentFragment,"content").commit(); 
  15.  
  16. public void setFragment(Fragment fragment){ 
  17. getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commit(); 
  18.  
  19. @Override 
  20. public void setContentFragment(String param) { 
  21. // TODO Auto-generated method stub 
  22. Bundle bundle=new Bundle(); 
  23. bundle.putString("title", param); 
  24. contentFragment=new ContentFragment(); 
  25. contentFragment.setArguments(bundle); 
  26. super.getSupportFragmentManager().beginTransaction() 
  27. .replace(R.id.content, contentFragment).commit(); 
  28.  
責任編輯:chenqingxiang 來源: 杰瑞教育
相關推薦

2021-10-14 06:52:47

算法校驗碼結構

2021-02-20 08:21:18

Hive動態(tài)分區(qū)

2009-06-10 18:12:38

Equinox動態(tài)化OSGi動態(tài)化

2024-07-01 08:40:18

tokio派生線程

2022-09-20 14:11:37

JVM調優(yōu)命令

2023-07-26 00:16:49

2024-04-07 00:00:00

ESlint命令變量

2024-05-28 09:12:10

2013-11-14 17:02:41

Android多窗口

2020-09-07 19:38:12

安卓手機Android

2021-06-11 13:59:22

CSS原子類

2023-04-26 10:21:04

2023-12-12 08:41:01

2023-12-20 08:23:53

NIO組件非阻塞

2024-04-30 09:02:48

2020-07-07 12:30:16

Windows 10Windows操作系統(tǒng)

2022-12-02 14:12:52

新能源汽車海爾

2024-07-08 00:00:01

多線程ThreadC#

2025-02-18 08:11:17

2022-11-04 14:16:05

點贊
收藏

51CTO技術棧公眾號