修复主页Fragment被回收后重复创建bug

This commit is contained in:
huangzhuanghua
2016-06-14 09:24:21 +08:00
parent 8a45656f39
commit 169ddbd375

View File

@ -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<String, String> entryMap;
private ArrayMap<String, String> 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<String, String>();
doneMap = new ArrayMap<String, String>();
@ -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<Fragment> 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<Fragment> 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<Fragment> 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<Fragment> list = getSupportFragmentManager().getFragments();
if (list != null) {
for (Fragment fragment : list) {
transaction.hide(fragment);
}
}
}
private void uploadData(String id, String platform) {