From 169ddbd375e6d2bd40f7434ef2b88a38c17d75f4 Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Tue, 14 Jun 2016 09:24:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=BB=E9=A1=B5Fragment?= =?UTF-8?q?=E8=A2=AB=E5=9B=9E=E6=94=B6=E5=90=8E=E9=87=8D=E5=A4=8D=E5=88=9B?= =?UTF-8?q?=E5=BB=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/gamecenter/MainActivity.java | 77 ++++++++++++++++--- 1 file changed, 68 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 65308d0283..f6c0f42502 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -12,6 +12,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.SystemClock; +import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v4.app.NotificationCompat; import android.support.v4.util.ArrayMap; @@ -117,6 +118,8 @@ public class MainActivity extends BaseFragmentActivity implements private ArrayMap entryMap; private ArrayMap doneMap; + private int currentTab; + private boolean isFirst; private boolean isDestroy = false; private boolean isShowDownload = false; @@ -371,10 +374,22 @@ public class MainActivity extends BaseFragmentActivity implements private Handler handler = new Handler(); + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putInt("currentTab" , currentTab); + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (savedInstanceState != null) { + currentTab = savedInstanceState.getInt("currentTab"); + } else { + currentTab = 0; + } + View contentView = View.inflate(this, R.layout.activity_main, null); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { @@ -385,7 +400,7 @@ public class MainActivity extends BaseFragmentActivity implements setContentView(contentView); initViews(); - setTabSelection(0); + setTabSelection(currentTab); entryMap = new ArrayMap(); doneMap = new ArrayMap(); @@ -953,8 +968,7 @@ public class MainActivity extends BaseFragmentActivity implements private void setTabSelection(int index) { clearSelection(); - FragmentTransaction transaction = getSupportFragmentManager() - .beginTransaction(); + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); hideFragments(transaction); switch (index) { case 0: @@ -963,11 +977,24 @@ public class MainActivity extends BaseFragmentActivity implements home1Title.setTextColor(getResources().getColor( R.color.theme_colors)); if (home1Fragment == null) { - home1Fragment = new HomeFragment(); - transaction.add(R.id.main_content, home1Fragment); + List list = getSupportFragmentManager().getFragments(); + if (list != null) { + for (Fragment fragment : list) { + if (fragment.getClass().equals(HomeFragment.class)) { + home1Fragment = (HomeFragment) fragment; + transaction.show(home1Fragment); + break; + } + } + } + if (home1Fragment == null) { + home1Fragment = new HomeFragment(); + transaction.add(R.id.main_content, home1Fragment); + } } else { transaction.show(home1Fragment); } + currentTab = 0; break; case 1: home2Layout.setClickable(false); @@ -975,11 +1002,24 @@ public class MainActivity extends BaseFragmentActivity implements home2Title.setTextColor(getResources().getColor( R.color.theme_colors)); if (pluginFragmentActivity == null) { - pluginFragmentActivity = new PluginFragment(); - transaction.add(R.id.main_content, pluginFragmentActivity); + List list = getSupportFragmentManager().getFragments(); + if (list != null) { + for (Fragment fragment : list) { + if (fragment.getClass().equals(PluginFragment.class)) { + pluginFragmentActivity = (PluginFragment) fragment; + transaction.show(pluginFragmentActivity); + break; + } + } + } + if (pluginFragmentActivity == null) { + pluginFragmentActivity = new PluginFragment(); + transaction.add(R.id.main_content, pluginFragmentActivity); + } } else { transaction.show(pluginFragmentActivity); } + currentTab = 1; break; case 2: home3Layout.setClickable(false); @@ -987,11 +1027,24 @@ public class MainActivity extends BaseFragmentActivity implements home3Title.setTextColor(getResources().getColor( R.color.theme_colors)); if (home3Fragment == null) { - home3Fragment = new PersonalFragment(); - transaction.add(R.id.main_content, home3Fragment); + List list = getSupportFragmentManager().getFragments(); + if (list != null) { + for (Fragment fragment : list) { + if (fragment.getClass().equals(PersonalFragment.class)) { + home3Fragment = (PersonalFragment) fragment; + transaction.show(home3Fragment); + break; + } + } + } + if (home3Fragment == null) { + home3Fragment = new PersonalFragment(); + transaction.add(R.id.main_content, home3Fragment); + } } else { transaction.show(home3Fragment); } + currentTab = 2; break; default: break; @@ -1027,6 +1080,12 @@ public class MainActivity extends BaseFragmentActivity implements if (home1Fragment != null) { transaction.hide(home1Fragment); } + List list = getSupportFragmentManager().getFragments(); + if (list != null) { + for (Fragment fragment : list) { + transaction.hide(fragment); + } + } } private void uploadData(String id, String platform) {