package com.metis.meishuquan.activity; import android.support.v4.app.Fragment; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; import android.view.View; import com.metis.base.activity.BaseActivity; import com.metis.base.fragment.MeTabFragment; import com.metis.base.manager.AccountManager; import com.metis.base.manager.WeChatPayManager; import com.metis.base.module.User; import com.metis.base.push.PushMessageHandler; import com.metis.base.push.PushMessageService; import com.metis.base.utils.FragmentUtils; import com.metis.base.utils.Log; import com.metis.base.widget.dock.DockBar; import com.metis.commentpart.fragment.CommentTabFragment; import com.metis.coursepart.fragment.CourseTabFragment; import com.metis.meishuquan.R; import com.metis.meishuquan.fragment.DiscoveryTabFragment; import com.metis.newslib.fragment.NewsTabFragment; import com.umeng.message.PushAgent; import com.umeng.message.UmengRegistrar; import com.umeng.update.UmengDialogButtonListener; import com.umeng.update.UmengUpdateAgent; import java.util.List; import butterknife.ButterKnife; import butterknife.InjectView; public class MainActivity extends BaseActivity implements DockBar.OnDockItemClickListener, BaseActivity.OnBackPressListener, AccountManager.OnUserChangeListener{ private static final String TAG = MainActivity.class.getSimpleName(); private NewsTabFragment mNewsFragment = new NewsTabFragment(); private CommentTabFragment mCommentFragment = new CommentTabFragment(); private CourseTabFragment mCourseFragment = new CourseTabFragment(); private DiscoveryTabFragment mDiscoveryFragment = new DiscoveryTabFragment(); private MeTabFragment mMeFragment = new MeTabFragment(); private Fragment mCurrentFragment = null; @InjectView(R.id.main_dock_bar) DockBar mMainDockBar = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /*List<Fragment> fragmentList = getSupportFragmentManager().getFragments(); if (fragmentList != null) { Log.v(TAG, "fragmentList.size=" + fragmentList.size()); } else { Log.v(TAG, "fragmentList=null"); }*/ ButterKnife.inject(this); //UmengUpdateAgent.silentUpdate(this); UmengUpdateAgent.setUpdateOnlyWifi(false); UmengUpdateAgent.update(this); PushAgent mPushAgent = PushAgent.getInstance(this); mPushAgent.enable(); mPushAgent.setMessageHandler(PushMessageHandler.getInstance()); mPushAgent.setPushIntentServiceClass(PushMessageService.class); AccountManager.getInstance(this).registerOnUserChangeListener(this); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); List<Fragment> fragmentList = getSupportFragmentManager().getFragments(); if (fragmentList != null && fragmentList.size() > 0) { final int length = fragmentList.size(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); for (int i = 0; i < length; i++) { ft.remove(fragmentList.get(i)); } ft.commit(); Log.v(TAG, "onPostCreate fragmentList.size=" + fragmentList.size()); } else { Log.v(TAG, "onPostCreate fragmentList=" + fragmentList); } Log.v(TAG, "onPostCreate DockBar.size = " + mMainDockBar.size()); if (mMainDockBar.size() == 0) { mMainDockBar.addDock(mNewsFragment.getDock(this)); mMainDockBar.addDock(mCommentFragment.getDock(this)); mMainDockBar.addDock(mCourseFragment.getDock(this)); mMainDockBar.addDock(mDiscoveryFragment.getDock(this)); mMainDockBar.addDock(mMeFragment.getDock(this)); mMainDockBar.setOnDockItemClickListener(this); if (mCurrentFragment == null) { mMainDockBar.selectDock(mCourseFragment.getDock(this)); } } } @Override protected void onResume() { super.onResume(); registerOnBackPressListener(this); UmengRegistrar.setDebug(this, true, true); String device_token = UmengRegistrar.getRegistrationId(this); Log.v(TAG, "device_token=" + device_token + "="); } @Override protected void onPause() { super.onPause(); AccountManager.getInstance(this).commitUser(); unregisterOnBackPressListener(this); } @Override protected void onDestroy() { super.onDestroy(); AccountManager.getInstance(this).unregisterOnUserChangeListener(this); } @Override public boolean onBackPressedReceived() { if (getSupportFragmentManager().getBackStackEntryCount() <= 0) { moveTaskToBack(true); return true; } return false; } /*@Override public void onBackPressed() { if (getSupportFragmentManager().getBackStackEntryCount() <= 0) { moveTaskToBack(true); return; } super.onBackPressed(); }*/ @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); AccountManager.getInstance(this).onSaveInstanceState(outState); /*List<Fragment> fragments = getSupportFragmentManager().getFragments(); final int length = fragments.size(); for (int i = 0; i < length; i++) { FragmentUtils.removeFragment(getSupportFragmentManager(), fragments.get(i)); } mCurrentFragment = null;*/ } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); AccountManager.getInstance(this).onRestoreInstanceState(savedInstanceState); } @Override public void onDockClick(View view, DockBar.Dock dock) { if (mCurrentFragment != null) { FragmentUtils.hideFragment(getSupportFragmentManager(), mCurrentFragment); mCurrentFragment = null; } FragmentUtils.showFragment(getSupportFragmentManager(), dock.target, R.id.main_fragment_container); mCurrentFragment = dock.target; } @Override public void onUserChanged(User user, boolean onLine) { } @Override public void onUserInfoChanged(User user) { } @Override public void onUserLogout() { finish(); } /*private void showFragment (Fragment fragment) { if (fragment == null) { return; } FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); if (fragment.isAdded()) { ft.show(fragment); } else { ft.add(R.id.main_fragment_container, fragment); } ft.commit(); mCurrentFragment = fragment; } private void hideFragment (Fragment fragment) { if (fragment == null) { return; } FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.hide(fragment); ft.commit(); mCurrentFragment = null; }*/ }