標籤:and rem rdf 固定 擷取 定義 原子性 index 異常
Fragment常用的三個類:
android.app.Fragment 主要用於定義Fragment
android.app.FragmentManager 主要用於在Activity中操作Fragment
android.app.FragmentTransaction 保證一些列Fragment操作的原子性
擷取FragmentManage的方式:
getFragmentManager()
getSupportFragmentManager //v4中FragmentActivity
主要的操作都是FragmentTransaction的方法
FragmentTransaction transaction = fm.benginTransatcion();//開啟一個事務
transaction.add() //往Activity中添加一個Fragment
transaction.remove() //從Activity中移除一個Fragment,如果被移除的Fragment沒有添加到回退棧(回退棧後面會詳細說),這個Fragment執行個體將會被銷毀。
transaction.replace()//使用另一個Fragment替換當前的,實際上就是remove()然後add()的合體~
transaction.hide() //當你的fragment數量固定很少時隱藏當前的Fragment,僅僅是設為不可見,並不會銷毀,多的時候可能出現OOM異常,
transaction.show()//顯示之前隱藏的Fragment
detach()會將view從UI中移除,和remove()不同,此時fragment的狀態依然由FragmentManager維護。
attach()重建view視圖,附加到UI上並顯示。
transatcion.commit()//提交一個事務
transatcion.commitAllowingStateLoss() //提交一個事務,和commit()不同的是,這個允許狀態值丟失
樣本:
FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.common_index_activity_rl_fragmentlayout, fragment);
rewardFragment = (RewardFragment) fragmentManager.findFragmentByTag("reward");
if (rewardFragment == null) {
rewardFragment = new RewardFragment();
fragmentTransaction.add(R.id.common_index_activity_ll_reward, rewardFragment, "reward"); //第三個參數設定標籤
fragmentTransaction.hide(rewardFragment);
}
fragmentTransaction.commitAllowingStateLoss();
android Fragment用法