日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 對Fragment切換的優化

對Fragment切換的優化

來源:程序員人生   發布時間:2014-12-18 08:33:21 閱讀次數:3409次

在項目中需要進行Fragment的切換,1直都是用replace()方法來替換Fragment:然后總感覺切換的時候有些卡頓,原來的代碼

/** * 切換頁面,這里采取回調 * * @param f */ public void switchFragment(Fragment f) { if (f == null) return; FragmentTransaction transaction = getSupportFragmentManager() .beginTransaction(); transaction.replace(R.id.fl_main, f); // transaction.addToBackStack(descString); transaction.commit(); // 讓menu回去 menu.toggle(); }

但是,這樣會有1個問題:
每次切換的時候,Fragment都會重新實例化,重新加載1邊數據,這樣非常消耗性能和用戶的數據流量。
就想,如何讓多個Fragment彼此切換時不重新實例化?
翻看了Android官方Doc,和1些組件的源代碼,發現,replace()這個方法只是在上1個Fragment不再需要時采取的簡便方法。
正確的切換方式是add(),切換時hide(),add()另外一個Fragment;再次切換時,只需hide()當前,show()另外一個。
這樣就可以做到多個Fragment切換不重新實例化


/** * 切換頁面的重載,優化了fragment的切換 * * @param f * @param descString */ public void switchFragment(Fragment from, Fragment to) { if (from == null || to == null) return; FragmentTransaction transaction = getSupportFragmentManager() .beginTransaction().setCustomAnimations(R.anim.tran_pre_in, R.anim.tran_pre_out); if (!to.isAdded()) { // 隱藏當前的fragment,add下1個到Activity中 transaction.hide(from).add(R.id.fl_main, to).commit(); } else { // 隱藏當前的fragment,顯示下1個 transaction.hide(from).show(to).commit(); } // 讓menu回去 menu.toggle(); }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久热中文 | 91亚洲国产精品 | 在线观看亚洲视频 | 精品1区2区 | av亚洲在线 | 日韩专区在线播放 | 欧洲天堂网 | 欧美三级免费看 | 国产精品毛片无码 | 严国精品国产三级国产 | 欧美日韩精品中文字幕 | 国产精品美女一区二区三区 | 成年人在线免费观看 | 欧美成人高清 | 激情欧美日韩一区二区 | 九九热在线视频 | 欧美一区二区三区 | 精品二区 | 久久久亚洲综合 | 日本久久网 | 精品国产乱码久久久久久闺蜜 | 91久久精品一区二区别 | 亚洲www视频 | 蜜臀av在线播放一区二区三区 | 久久精品国产99国产精品 | 中文在线一区二区 | 国产在线永久 | 精品一区二区三区久久 | 午夜国产在线 | 国产精品久久久久久久久免费软件 | 一区二区三区精品视频 | 欧美一区二区三区在线 | 男女在线视频 | 久综合 | 黄色三级小视频 | 99欧美精品 | 一区二区三区视频在线 | 日本精品视频在线 | 一区二区三区四区国产 | 亚洲久久一区 | 免费毛片网|