成人免费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動態化

2024-07-01 08:40:18

tokio派生線程

2022-09-20 14:11:37

JVM調優命令

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操作系統

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技術棧公眾號

主站蜘蛛池模板: 色婷婷久久久亚洲一区二区三区 | 少妇一级淫片aaaaaaaaa | 99中文字幕| 一级h片| 欧美日本在线观看 | 欧美成人一区二区三区 | 国产激情网 | 99re热精品视频国产免费 | 国产视频在线观看一区二区三区 | 国产目拍亚洲精品99久久精品 | 国产精品99久久久久 | 久草青青草 | 欧美成人精品在线 | 亚洲精品久久久久久久久久久 | 亚洲第一黄色网 | 日本在线播放 | 精品在线一区 | 国产福利在线 | 色网站入口 | 久久久久久免费毛片精品 | 久久久久久一区 | 中日韩欧美一级片 | 国产日韩一区二区三区 | 九九热这里 | 狠狠色综合欧美激情 | 日本超碰 | 国产在线拍偷自揄拍视频 | 又爽又黄axxx片免费观看 | 伊人青青久久 | jdav视频在线观看免费 | 在线观看国产91 | 狠狠骚 | 久久午夜国产精品www忘忧草 | 成人激情免费视频 | 365夜爽爽欧美性午夜免费视频 | 一本色道精品久久一区二区三区 | 麻豆久久久久 | 亚洲欧美高清 | 成人二区 | 少妇一区在线观看 | 国产伦精品一区二区三区照片91 |