2022年3月20日 星期日

android studio:Fragment

 Fragment有點像Activity,它必需放在Activity中,可以看作子Activity,一個activity裡可以放好幾個 Fragment,當Activity結束, Fragment也會跟著結束。

簡單使用Fragment的方法如下:

1.在MainActivity的xml設定一個FrameLayout,做為放置Fragment的地方:

<FrameLayout 
android:id="@+id/framelayout"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

2.建立你需要的Fragment <File> → <new> <Fragment> →選擇你要的Fragment類型

3.建立FragmentManager做為設定器
4.利用beginTransation建立轉移的方法。
5.利用add 或是replace將你要放置的Fragment放入預先做好的FrameLayout中,其中的參數1是FrameLayout的id,參數2是你要放入的fragment
6.加入addToBackStack,將加入的fragment放入FragmentManager設定器中,這樣的好處是何以按上一頁按鍵,回到上一頁,而不是直接跳開。
7.利用commit執行畫面轉移。

FragmentManager fragmentManager=getSupportFragmentManager();
//設定fragmentManager的設定器
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
//新建fragmentTransaction轉移方法
BlankFragment2 blankFragment2=new BlankFragment2();
fragmentTransaction.replace(R.id.framelayout,blankFragment2);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
其餘,可用的FragmentManager方法如下:
add() 增加Fragment於FragmentManager中,可同時增加很多個Fragment
show() 透過顯示,顯示你要的Fragment
hide()透過隱藏,隱藏不要的Fragment

8.若要在Fragment中互相傳遞資料
(1)需將資料放置在Bundle中,並利用setArguments這個方法傳出,如下:

BlankFragment2 blankFragment2=new BlankFragment2(); 
Bundle bundledata = new Bundle(); //新增一bundle放置資料
bundledata.putString("data", "要傳的資料"); //放置要傳送的資料至bundle中
blankFragment2.setArguments(bundledata); //將設置好的bundle資料放入你要傳送到的Fragment

(2)而取得的方法如下:
if (getArguments() != null) { //判斷是否取得傳入的值
String mParam1 = getArguments().getString("data"); //設定mParam1為傳送的值
TextView textView = view.findViewById(R.id.textview2); //引入TextView
textView.setText(mParam1); //將TextView的文字設為傳入的值
}

沒有留言:

張貼留言