Skip to content

Commit 685ba1e

Browse files
committed
修改p031 Fragment重叠问题
1 parent 7d8a033 commit 685ba1e

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

.idea/caches/build_file_checksums.ser

0 Bytes
Binary file not shown.

p031_mokuaihua_viewpager_fragment/src/main/java/com/example/p031_mokuaihua_viewpager_fragment/demo5/Demo5Activity.java

+16
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,15 @@ public class Demo5Activity extends AppCompatActivity {
2828
private FragmentContent mShopGoodsListFragment; // 商城商品列表
2929

3030
private FragmentManager mFragmentManager;
31+
private boolean once;
3132

33+
/**
34+
* 当系统内存不足,Fragment 的宿主 Activity 回收的时候,Fragment 的实例并没有随之被回收。
35+
* Activity 被系统回收时,会主动调用 onSaveInstance() 方法来保存视图层(View Hierarchy),
36+
* 所以当 Activity 通过导航再次被重建时,之前被实例化过的 Fragment 依然会出现在 Activity 中,
37+
* 此时的 FragmentTransaction 中的相当于又再次 add 了 fragment 进去的,hide()和show()方法对之前保存的fragment已经失效了,所以就出现了重叠。
38+
* @param savedInstanceState
39+
*/
3240
@Override
3341
protected void onCreate(Bundle savedInstanceState) {
3442
super.onCreate(savedInstanceState);
@@ -37,6 +45,10 @@ protected void onCreate(Bundle savedInstanceState) {
3745
onclick();
3846

3947
mFragmentManager = getSupportFragmentManager();
48+
if (savedInstanceState!=null){
49+
mShopIndexFragment = (FragmentIndex) mFragmentManager.findFragmentByTag(INDEX_TAG);
50+
mShopGoodsListFragment = (FragmentContent) mFragmentManager.findFragmentByTag(LIST_TAG);
51+
}
4052
donetwork();
4153
}
4254

@@ -51,6 +63,10 @@ private void onclick() {
5163
@Override
5264
public void onTabSelected(TabLayout.Tab tab) {
5365
String tag = (String) tab.getTag();
66+
if (!once) {
67+
once = true;
68+
return;
69+
}
5470
if (TextUtils.isEmpty(tag)) {
5571
return;
5672
}

p047_userlogin/src/main/java/com/example/shining/p047_userlogin/activity/LoginActivity.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void onClick(View view) {
4040
btn_ok.setOnClickListener(new View.OnClickListener() {
4141
@Override
4242
public void onClick(View view) {
43-
donetloginout();
43+
donetlogin();
4444
}
4545
});
4646
}
@@ -56,11 +56,11 @@ private void onLoginCanceled() {
5656
}
5757

5858
/**
59-
* 登出操作
59+
* 登录操作
6060
*/
61-
private void donetloginout() {
61+
private void donetlogin() {
6262
//step 请求服务器成功后清除sp中的数据
63-
SpUtils.get(this).get("", "");
63+
// SpUtils.get(this).get("", "");
6464
onLoginSuccess();
6565
}
6666

0 commit comments

Comments
 (0)