Skip to content

Commit f299613

Browse files
authored
Merge pull request #5 from iamsee/master
修复从视频详情页跳转到主页面重复添加fragment的问题,及由此导致的fragment不断累加重叠问题
2 parents d77acfa + 656d875 commit f299613

File tree

1 file changed

+87
-8
lines changed

1 file changed

+87
-8
lines changed

app/src/main/java/com/hazz/kotlinmvp/ui/activity/MainActivity.kt

Lines changed: 87 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)