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);

方案二(推薦):

@Override
public 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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395436.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395436.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395436.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用VB.net建立excel文件

Add the following code snippet on top of Form1.vb Imports Excel Microsoft.Office.Interop.Excel Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickDim appXL As Excel.Application 聲明一個application對象Dim wbX…

沙盤演練工作坊-產品開發_Google認證的Android助理開發人員:考試演練

沙盤演練工作坊-產品開發by Rohan Taneja由Rohan Taneja Google認證的Android助理開發人員:考試演練 (Google Certified Associate Android Developer: Exam Walkthrough) UPDATE (24th July, 2018)更新(2018年7月24日) The certification exam is available agai…

linux hlist,linux內核V2.6.11學習筆記(2)--list和hlist

這兩個數據結構在內核中隨處可見,不得不拿出來單獨講講.這兩個數據結構都是為了方便內核開發者在使用到類似數據結構的時候不必自行開發(雖然不難),因此它們需要做到足夠的"通用性",也就是說,今天可以用它們做一個存放進程的鏈表,明天同樣可以做一個封裝定時器的鏈表…

14-angular.isDefined

判斷括號內的值是否存在。 格式: angular.isDefined(value); value: 被判斷是否存在的值。 返回值: true/false轉載于:https://www.cnblogs.com/ms-grf/p/6978886.html

實施工程師1分鐘即時演講_我是如何在1年內從時裝模特轉變為軟件工程師的

實施工程師1分鐘即時演講In 2015 I knew almost nothing about coding. Today, I’m a software engineer and a teacher at a code school for kids.在2015年,我對編碼幾乎一無所知。 今天,我是一名軟件工程師,還是一所代碼學校的兒童老師。…

MSSQL分組取后每一組的最新一條記錄

數據庫中二張表,用戶表和獎金記錄表,獎金記錄表中一個用戶有多條信息,有一個生效時間,現在要查詢: 獎金生效時間在三天前,每個用戶取最新一條獎金記錄,且用戶末鎖定 以前用的方法是直接寫在C#代…

android模擬器插件,Android模擬器插件找不到android SDK

首先,克隆項目詹金斯一直輸出后:[android] No Android SDK found; lets install it automatically...[android] Going to install required Android SDK components...[android] Installing the platform-tool,tool SDK component(s)...$ /var/lib/jenki…

讀書筆記--模板與泛型編程

了解隱式接口和編譯期多態 編譯期多態和運行期多態 運行期多態就好比是virtual函數再運行的時候才確定該virtual函數該被綁定為哪個函數,運行的時候才確定函數類型。  編譯期多態就好比是泛型編程和模板編程中,在編譯的時候才確定哪個函數該被調用&…

棧和遞歸的關系 144:Binary Tree Preorder Traversal

前序遍歷:根左右 //用棧來實現非遞歸解法/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:vec…

運行級別

ls -l /usr/lib/system/runlevel*target (查看運行級別)Linux系統有7個運行級別(runlevel)運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動運行級別1:單用戶工作狀態,roo…

微信sdk swift版_使用Swift 4的iOS版Google Maps SDK終極指南

微信sdk swift版by Dejan Atanasov通過Dejan Atanasov 使用Swift 4的iOS版Google Maps SDK終極指南 (Your ultimate guide to the Google Maps SDK on iOS, using Swift 4) Many iOS apps use Google Maps. This is a very common feature, so I have decided to prepare an u…

精確覆蓋DLX算法模板

代碼 struct DLX {int n,id;int L[maxn],R[maxn],U[maxn],D[maxn];int C[maxn],S[maxn],loc[maxn][2];void init(int nn0) //傳列長{nnn;for(int i0;i<n;i) U[i]D[i]i,L[i]i-1,R[i]i1;L[0]n; R[n]0;idn;memset(S,0,sizeof(S));}void AddRow(int x,int col,int A[]) //傳入參…

android 代碼布局設置wrap_content,android ScrollView布局(wrap_content,最大大小)

我最后編寫了自己的類,擴展了ScrollView既然你問……這是代碼.可能不是最干凈但它做我想要的.請注意,它期望在創建視圖時設置layout_weight,并且不應在父LinearLayout中設置weigthSum,否則你會得到有趣的東西(因為這個的權重從原始值變為0,具體取決于大小ScrollView的內容)首先…

ABAP數據類型

數據類型表&#xff1a; 類型縮寫 類型 默認長度 允許長度 初始值 描述 C 文本型 1 Space 字符串數據,如Program D 日期型 8 8 00000000 日期數據,格式為YYYYMMDD F 浮點型 8 8 0 浮點數 I 整型 4 10 0 帶正負符號的整數 N 數值型 1 31 00……

cocos2d-x C++ 原始工程引擎運行機制解析

新建一個工程&#xff0c;相信感興趣的同學都想知道cocos引擎都是如何運行的 想知道是如何運行的&#xff0c;看懂四個文件即可 話不多說&#xff0c;上代碼&#xff1a; 1、首先解釋 AppDelegate.h 1 #ifndef _APP_DELEGATE_H_2 #define _APP_DELEGATE_H_3 4 #include "…

web高德maker動畫_Web Maker —我如何構建一個快速的離線前端游樂場

web高德maker動畫by kushagra gour由kushagra gour Web Maker —我如何構建一個快速的離線前端游樂場 (Web Maker — How I built a fast, offline front-end playground) Web Maker is a Chrome extension that gives you a blazing fast and offline front-end playground —…

時間小知識對于時間轉換可能有幫助

那么UTC與世界各地的時間應如何換算呢?它是將全世界分為24個時區&#xff0c;地球的東、西經各180(共360)被24個時區平分&#xff0c;每個時區各占15。以經度0(即本初子午線)為基準&#xff0c;東經730′與西經730′之間的區域為零時區&#xff1b;東經和西經的730′與2230′之…

JS——實現短信驗證碼的倒計時功能(沒有驗證碼,只有倒計時)

1、功能描述 當用戶想要獲取驗證碼時&#xff0c;就點擊 免費獲取驗證碼 &#xff0c;然后開始倒計時&#xff0c;倒計時期間按鈕文字為剩余時間x秒&#xff0c;且不可按狀態&#xff0c;倒計時結束后&#xff0c;按鈕更改為點擊重新發送。 2、分析 必須用到定時器。按鈕點擊后…

華為OV小米鴻蒙,華為鴻蒙開源,小米OV們會采用嗎?

華為曾一直聲言不會進入電視市場,由此其他國產電視企業才會采用華為的可見企業是非常擔憂同業競爭關系的,而在智能手機市場,華為毫無疑問與其他國產手機企業都是競爭對手,更何況就在2019年下半年和2020年上半年華為在國內手機市場的份額超過四成直逼五成,其他國產手機企業被壓得…

第22天:如何使用OpenAI Gym和Universe構建AI游戲機器人

by Harini Janakiraman通過哈里尼賈納基拉曼 第22天&#xff1a;如何使用OpenAI Gym和Universe構建AI游戲機器人 (Day 22: How to build an AI Game Bot using OpenAI Gym and Universe) Let’s face it, AI is everywhere. A face-off battle is unfolding between Elon Musk…