ViewPager中Fragment的重复创建、复用问题
生活随笔
收集整理的這篇文章主要介紹了
ViewPager中Fragment的重复创建、复用问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ?在ViewPager中的Fragment的生命周期? 隨著頁面的切換 當前的展示頁相鄰的頁面生命周期一直在變化
?
? ?一開始 剛進入Activity時候,ViewPager默認初始化好前兩個Fragment(消息和任務)
消息 ->任務
05-09 14:47:39.593 31509-31509/tyh.com.tablayout E/TYH: 團隊onAttach 05-09 14:47:39.593 31509-31509/tyh.com.tablayout E/TYH: 團隊onCreate 05-09 14:47:39.593 31509-31509/tyh.com.tablayout E/TYH: 團隊onCreateView 05-09 14:47:39.603 31509-31509/tyh.com.tablayout E/TYH: 團隊onStart 05-09 14:47:39.603 31509-31509/tyh.com.tablayout E/TYH: 團隊onResume任務 ->團隊
5-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 消息onPause 05-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 消息onStop 05-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 消息onDestroyView 05-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 部門onAttach 05-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 部門onCreate 05-09 14:55:26.942 31509-31509/tyh.com.tablayout E/TYH: 部門onCreateView 05-09 14:55:26.942 31509-31509/tyh.com.tablayout E/TYH: 部門onStart 05-09 14:55:26.942 31509-31509/tyh.com.tablayout E/TYH: 部門onResume團隊 ->部門
05-09 14:57:18.371 31509-31509/tyh.com.tablayout E/TYH: 任務onPause 05-09 14:57:18.371 31509-31509/tyh.com.tablayout E/TYH: 任務onStop 05-09 14:57:18.371 31509-31509/tyh.com.tablayout E/TYH: 任務onDestroyView部門 ->團隊
05-09 15:00:50.918 31509-31509/tyh.com.tablayout E/TYH: 任務onCreateView 05-09 15:00:50.918 31509-31509/tyh.com.tablayout E/TYH: 任務onStart 05-09 15:00:50.918 31509-31509/tyh.com.tablayout E/TYH: 任務onResume? ? 你會發現 當 Fragment完成onCreate之后再去切換的時候? 只會執行onCreateView和onDestroyView方法不會再去onCreate
那么如何避免重復的創建和銷毀呢? 解決方案如下:
方案一(不推薦):
mViewPager.setOffscreenPageLimit(4);方案二(推薦):
@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if(view==null){
view = inflater.inflate(R.layout.contentfragment,container,false);
tvContent = (TextView) view.findViewById(R.id.tv_content);
String string = getArguments().getString(KEY);
tvContent.setText(string);
tvContent.setTextColor(Color.BLUE);
tvContent.setTextSize(30);
}
return view;
} @Override
public void onDestroyView() {
super.onDestroyView();
if(view!=null){
view.getParent().remove(view);
}
}
? ? 如此當重新創建Fragment的時候就會復用之前創建好的View不會重復創建
?
轉載于:https://www.cnblogs.com/bimingcong/p/10276450.html
總結
以上是生活随笔為你收集整理的ViewPager中Fragment的重复创建、复用问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学习(五)列表的简单操作
- 下一篇: 栈和递归的关系 144:Binary T