亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Fragment組件怎么用

發布時間:2022-03-29 17:42:19 來源:億速云 閱讀:203 作者:iii 欄目:移動開發

這篇文章主要介紹“Fragment組件怎么用”,在日常操作中,相信很多人在Fragment組件怎么用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Fragment組件怎么用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、Fragment與Activity的關系

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

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

二、使用FragmentManager組件

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

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

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

三、實現案例

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

Fragment組件怎么用

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

到此,關于“Fragment組件怎么用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

始兴县| 万安县| 呼和浩特市| 罗定市| 清水县| 米林县| 德格县| 崇仁县| 太原市| 高邮市| 会昌县| 永修县| 霍州市| 太康县| 和田市| 长沙县| 庆阳市| 彰武县| 称多县| 新绛县| 砀山县| 镇平县| 通城县| 元江| 本溪| 新宾| 安多县| 剑河县| 天柱县| 宁远县| 龙井市| 垣曲县| 焉耆| 友谊县| 杭锦旗| 府谷县| 叙永县| 文登市| 大石桥市| 韶山市| 思茅市|