@@ -84,23 +84,73 @@ class MainActivity : BaseActivity() {
8484 private fun switchFragment (position : Int ) {
8585 val transaction = supportFragmentManager.beginTransaction()
8686 hideFragments(transaction)
87+ // showToast(supportFragmentManager.fragments.size.toString())
88+ /* 重复进入退出视频详情页会导致fragment不断增加*/
89+ // when (position) {
90+ // 0 //首页
91+ // -> if (mHomeFragment == null) {
92+ //
93+ // mHomeFragment = HomeFragment.getInstance(mTitles[position])
94+ // transaction.add(R.id.fl_container, mHomeFragment, "home")
95+ // } else {
96+ // transaction.show(mHomeFragment)
97+ // }
98+ // 1 //发现
99+ // -> if (mDiscoveryFragment == null) {
100+ // mDiscoveryFragment = DiscoveryFragment.getInstance(mTitles[position])
101+ // transaction.add(R.id.fl_container, mDiscoveryFragment, "discovery")
102+ // } else {
103+ // transaction.show(mDiscoveryFragment)
104+ // }
105+ // 2 //热门
106+ // -> if ( mHotFragment == null) {
107+ // mHotFragment = HotFragment.getInstance(mTitles[position])
108+ // transaction.add(R.id.fl_container, mHotFragment, "hot")
109+ // }
110+ // else {
111+ // transaction.show(mHotFragment)
112+ // }
113+ //
114+ // 3 //我的
115+ // -> if (mMineFragment == null) {
116+ // mMineFragment = MineFragment.getInstance(mTitles[position])
117+ // transaction.add(R.id.fl_container, mMineFragment, "mine")
118+ // } else {
119+ // transaction.show(mMineFragment)
120+ // }
121+ // else -> {
122+ //
123+ // }
124+ // }
87125 when (position) {
88126 0 // 首页
89127 -> if (mHomeFragment == null ) {
128+ var cacheMHomeFragment = supportFragmentManager.findFragmentByTag(" home" )
129+ if (cacheMHomeFragment != null ){
130+ transaction.remove(cacheMHomeFragment)
131+ }
90132 mHomeFragment = HomeFragment .getInstance(mTitles[position])
91133 transaction.add(R .id.fl_container, mHomeFragment, " home" )
92134 } else {
93135 transaction.show(mHomeFragment)
94136 }
95137 1 // 发现
96138 -> if (mDiscoveryFragment == null ) {
139+ var cacheMDiscoveryFragment = supportFragmentManager.findFragmentByTag(" discovery" )
140+ if (cacheMDiscoveryFragment != null ){
141+ transaction.remove(cacheMDiscoveryFragment)
142+ }
97143 mDiscoveryFragment = DiscoveryFragment .getInstance(mTitles[position])
98144 transaction.add(R .id.fl_container, mDiscoveryFragment, " discovery" )
99145 } else {
100146 transaction.show(mDiscoveryFragment)
101147 }
102148 2 // 热门
103149 -> if ( mHotFragment == null ) {
150+ var cacheMHotFragment = supportFragmentManager.findFragmentByTag(" hot" )
151+ if (cacheMHotFragment != null ){
152+ transaction.remove(cacheMHotFragment)
153+ }
104154 mHotFragment = HotFragment .getInstance(mTitles[position])
105155 transaction.add(R .id.fl_container, mHotFragment, " hot" )
106156 }
@@ -110,6 +160,10 @@ class MainActivity : BaseActivity() {
110160
111161 3 // 我的
112162 -> if (mMineFragment == null ) {
163+ var cacheMMineFragment = supportFragmentManager.findFragmentByTag(" mine" )
164+ if (cacheMMineFragment != null ){
165+ transaction.remove(cacheMMineFragment)
166+ }
113167 mMineFragment = MineFragment .getInstance(mTitles[position])
114168 transaction.add(R .id.fl_container, mMineFragment, " mine" )
115169 } else {
@@ -130,29 +184,54 @@ class MainActivity : BaseActivity() {
130184 * @param transaction transaction
131185 */
132186 private fun hideFragments (transaction : FragmentTransaction ) {
133- if (null != mHomeFragment) {
134- transaction.hide(mHomeFragment)
187+ /* mHomeFragment 丢失问题应该用全局查找替代*/
188+ // if (null != mHomeFragment) {
189+ // transaction.hide(mHomeFragment)
190+ // }
191+ // if (null != mDiscoveryFragment) {
192+ // transaction.hide(mDiscoveryFragment)
193+ // }
194+ // if (null != mHotFragment) {
195+ // transaction.hide(mHotFragment)
196+ // }
197+ // if (null != mMineFragment) {
198+ // transaction.hide(mMineFragment)
199+ // }
200+ var cacheMHomeFragment = supportFragmentManager.findFragmentByTag(" home" )
201+
202+ var cacheMDiscoveryFragment = supportFragmentManager.findFragmentByTag(" discovery" )
203+ var cacheMMineFragment = supportFragmentManager.findFragmentByTag(" hot" )
204+ var cacheMHotFragment = supportFragmentManager.findFragmentByTag(" mine" )
205+ if (null != cacheMHomeFragment) {
206+ transaction.hide(cacheMHomeFragment)
135207 }
136- if (null != mDiscoveryFragment ) {
137- transaction.hide(mDiscoveryFragment )
208+ if (null != cacheMDiscoveryFragment ) {
209+ transaction.hide(cacheMDiscoveryFragment )
138210 }
139- if (null != mHotFragment ) {
140- transaction.hide(mHotFragment )
211+ if (null != cacheMMineFragment ) {
212+ transaction.hide(cacheMMineFragment )
141213 }
142- if (null != mMineFragment ) {
143- transaction.hide(mMineFragment )
214+ if (null != cacheMHotFragment ) {
215+ transaction.hide(cacheMHotFragment )
144216 }
145217
218+
146219 }
147220
148221
149222 override fun onSaveInstanceState (outState : Bundle ) {
223+ // showToast("onSaveInstanceState->"+mIndex)
150224 super .onSaveInstanceState(outState)
151225 // 记录fragment的位置,防止崩溃 activity被系统回收时,fragment错乱
152226 if (tab_layout != null ) {
153227 outState.putInt(" currTabIndex" , mIndex)
154228 }
155229 }
230+ override fun onRestoreInstanceState (savedInstanceState : Bundle ? ) {
231+ // showToast("onRestoreInstanceState->"+mIndex)
232+ // switchFragment(savedInstanceState!!.getInt( mIndex.toString() ));
233+ // super.onRestoreInstanceState(savedInstanceState)
234+ }
156235
157236 override fun initView () {
158237
0 commit comments