File tree 3 files changed +20
-4
lines changed
p031_mokuaihua_viewpager_fragment/src/main/java/com/example/p031_mokuaihua_viewpager_fragment/demo5
p047_userlogin/src/main/java/com/example/shining/p047_userlogin/activity
3 files changed +20
-4
lines changed Original file line number Diff line number Diff line change @@ -28,7 +28,15 @@ public class Demo5Activity extends AppCompatActivity {
28
28
private FragmentContent mShopGoodsListFragment ; // 商城商品列表
29
29
30
30
private FragmentManager mFragmentManager ;
31
+ private boolean once ;
31
32
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
+ */
32
40
@ Override
33
41
protected void onCreate (Bundle savedInstanceState ) {
34
42
super .onCreate (savedInstanceState );
@@ -37,6 +45,10 @@ protected void onCreate(Bundle savedInstanceState) {
37
45
onclick ();
38
46
39
47
mFragmentManager = getSupportFragmentManager ();
48
+ if (savedInstanceState !=null ){
49
+ mShopIndexFragment = (FragmentIndex ) mFragmentManager .findFragmentByTag (INDEX_TAG );
50
+ mShopGoodsListFragment = (FragmentContent ) mFragmentManager .findFragmentByTag (LIST_TAG );
51
+ }
40
52
donetwork ();
41
53
}
42
54
@@ -51,6 +63,10 @@ private void onclick() {
51
63
@ Override
52
64
public void onTabSelected (TabLayout .Tab tab ) {
53
65
String tag = (String ) tab .getTag ();
66
+ if (!once ) {
67
+ once = true ;
68
+ return ;
69
+ }
54
70
if (TextUtils .isEmpty (tag )) {
55
71
return ;
56
72
}
Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ public void onClick(View view) {
40
40
btn_ok .setOnClickListener (new View .OnClickListener () {
41
41
@ Override
42
42
public void onClick (View view ) {
43
- donetloginout ();
43
+ donetlogin ();
44
44
}
45
45
});
46
46
}
@@ -56,11 +56,11 @@ private void onLoginCanceled() {
56
56
}
57
57
58
58
/**
59
- * 登出操作
59
+ * 登录操作
60
60
*/
61
- private void donetloginout () {
61
+ private void donetlogin () {
62
62
//step 请求服务器成功后清除sp中的数据
63
- SpUtils .get (this ).get ("" , "" );
63
+ // SpUtils.get(this).get("", "");
64
64
onLoginSuccess ();
65
65
}
66
66
You can’t perform that action at this time.
0 commit comments