成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

一、Fragment與Activity的關系

要理解動態管理Fragment首先要理解一下Fragment與Activity的關系

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

二、使用FragmentManager組件

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

  1. //1、創建FragmentManager組件 
  2. FragmentManager fm=super.getSupportFragmentManager(); 
  3. //2、查詢方法,獲得Activity中某一個Fragment 
  4. fm.findFragmentById(R.id.fooler) 
  5. fm.findFragmentByTag(”tagName”) 
  6. //3、動態添加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傳遞數據 
  13. f.setArguments(Bundle )方法傳遞數據

     

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

三、實現案例

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

界面分析:有三個區域 :頭部區域TitleFragment,中心區域是一個FrameLayout布局通過代碼動態加載ContentFragment,底部區域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中去實現,降低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. //回調機制,調用實現類的方法 
  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);//注冊偵聽,傳入實現類對象 
  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動態分區

2009-06-10 18:12:38

Equinox動態化OSGi動態化

2022-09-20 14:11:37

JVM調優命令

2024-07-01 08:40:18

tokio派生線程

2020-09-07 19:38:12

安卓手機Android

2013-11-14 17:02:41

Android多窗口

2021-06-11 13:59:22

CSS原子類

2023-07-26 00:16:49

2023-12-20 08:23:53

NIO組件非阻塞

2023-12-12 08:41:01

2023-04-26 10:21:04

2024-04-30 09:02:48

2015-01-13 11:17:17

2020-07-07 12:30:16

Windows 10Windows操作系統

2024-05-28 09:12:10

2024-04-07 00:00:00

ESlint命令變量

2024-11-14 10:44:57

2021-03-26 11:00:50

SpringMVC組件接口

2010-09-07 14:21:22

PPPoE協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人免费一区二区三区视频网站 | 国产一级黄色网 | 国产成在线观看免费视频 | 精品国产第一区二区三区 | 色妞av | av一区在线观看 | 国产美女久久 | 欧美精品免费观看二区 | 国产成人精品免费视频 | 久久av一区二区 | 亚洲综合色网 | 国产亚洲一区二区三区 | 色在线免费视频 | 国产精品亚洲一区二区三区在线 | 成人免费视频网站在线看 | 免费的av| 免费黄篇| 99久久夜色精品国产亚洲96 | 免费 视频 1级 | 国产日产欧产精品精品推荐蛮挑 | 欧美日韩亚洲二区 | 97精品一区二区 | 亚洲一区二区三区视频免费观看 | 91影片 | 国产精品国产三级国产a | 亚洲精品一区二区 | www.国产 | 亚洲国产一区二区三区 | 日韩精品视频在线观看一区二区三区 | 欧美日韩在线一区二区 | 亚洲69p| 一级做受毛片免费大片 | xx性欧美肥妇精品久久久久久 | 久久精品亚洲 | 狠狠操网站 | 国内自拍视频在线观看 | 人人做人人澡人人爽欧美 | 欧美日韩中文在线 | 欧美日韩精品一区二区天天拍 | 日韩中文一区二区三区 | 国产成人精品一区二区三区在线 |