修复主页Fragment被回收后重复创建bug
This commit is contained in:
@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user