91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

岳普湖县| 阿巴嘎旗| 竹山县| 会理县| 桦甸市| 太和县| 阿鲁科尔沁旗| 合作市| 舞阳县| 高雄县| 富民县| 安化县| 天祝| 定远县| 西乡县| 平江县| 交城县| 崇州市| 六盘水市| 昔阳县| 苍南县| 古丈县| 北碚区| 嵩明县| 桑日县| 玛曲县| 达孜县| 江达县| 郸城县| 汨罗市| 灵璧县| 萝北县| 民勤县| 德令哈市| 天水市| 固阳县| 兴仁县| 吉水县| 积石山| 凌云县| 湖南省|