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) {