package cn.daixiaodong.myapp.activity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.support.design.widget.NavigationView; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.MenuItem; import android.view.View; import com.avos.avoscloud.AVInstallation; import com.avos.avoscloud.PushService; import com.avos.avoscloud.feedback.FeedbackAgent; import com.bmob.pay.tool.BmobPay; import com.umeng.update.UmengUpdateAgent; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; import java.util.ArrayList; import cn.daixiaodong.myapp.R; import cn.daixiaodong.myapp.activity.common.BaseActivity; import cn.daixiaodong.myapp.config.Constants; import cn.daixiaodong.myapp.fragment.UserCollectFragment; import cn.daixiaodong.myapp.fragment.UserFollowFragment; import cn.daixiaodong.myapp.fragment.HomeFragment; import cn.daixiaodong.myapp.fragment.PushMessageFragment; import cn.daixiaodong.myapp.receiver.PushBroadcastReceiver; /** * 应用主界面 */ @EActivity(R.layout.activity_main) public class MainActivity extends BaseActivity { private int mCurrentPosition = R.id.action_home; public static final String BROAD_RECEIVER_ACTION = "broad_receiver"; @ViewById(R.id.id_tb_toolbar) Toolbar mViewToolbar; @ViewById(R.id.id_layout_drawer_layout) DrawerLayout mDrawerLayout; @ViewById(R.id.id_nv_navigation) NavigationView mViewNav; private ArrayList<Fragment> mFragments; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState == null) { initData(); } // 接受消息推送 广播 数据 处理相应逻辑 if (BROAD_RECEIVER_ACTION.equals(getIntent().getAction())) { Bundle bundle = getIntent().getBundleExtra(PushBroadcastReceiver.BROAD_DATA_KEY); String title = bundle.getString("title"); Log.i(BROAD_RECEIVER_ACTION, title); } // 第三方SDK初始化 AVInstallation.getCurrentInstallation().saveInBackground(); PushService.setDefaultPushCallback(this, MainActivity_.class); FeedbackAgent agent = new FeedbackAgent(this); agent.sync(); UmengUpdateAgent.update(this); BmobPay.init(this, Constants.BMOB_APPLICATION_ID); } @Override protected void onSaveInstanceState(Bundle outState) { //outState.putSerializable("list", mFragments); Log.i("tag", "onSaveInstanceState"); super.onSaveInstanceState(outState); // } @AfterViews void init() { initToolbar(); initNav(); setCurrentFragment("首页", R.id.action_home); } private void initData() { mFragments = new ArrayList<>(); } private void initNav() { mViewNav.findViewById(R.id.id_iv_profile_photo).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { UserProfileActivity_.intent(MainActivity.this).start(); } }); mViewNav.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(MenuItem menuItem) { mDrawerLayout.closeDrawer(GravityCompat.START); if (menuItem.getItemId() == R.id.action_feedback) { FeedbackAgent agent = new FeedbackAgent(MainActivity.this); agent.startDefaultThreadActivity(); return true; } if (menuItem.getItemId() == R.id.action_settings) { startActivity(new Intent(MainActivity.this, SettingsActivity.class)); return true; } if (mCurrentPosition != menuItem.getItemId()) { setCurrentFragment(menuItem.getTitle().toString(), menuItem.getItemId()); setCurrentTitle(menuItem.getTitle().toString()); mCurrentPosition = menuItem.getItemId(); menuItem.setChecked(true); } return true; } }); } private void setCurrentTitle(String s) { mViewToolbar.setTitle(s); } /** * 设置Toolbar,设置标题,设置Drawer导航 */ private void initToolbar() { setSupportActionBar(mViewToolbar); ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mViewToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); mDrawerToggle.syncState(); mDrawerLayout.setDrawerListener(mDrawerToggle); mViewToolbar.setTitleTextColor(Color.WHITE); mViewToolbar.setTitle("首页"); } private void setCurrentFragment(String title, int itemId) { // Log.i("tag", "setCurrentFragment"); FragmentManager fragmentManager = getSupportFragmentManager(); Fragment mCurrentFragment = fragmentManager.findFragmentByTag(title); // 将集合中的fragment隐藏 for (Fragment fragment : mFragments) { fragmentManager.beginTransaction().hide(fragment).commit(); } if (mCurrentFragment == null) { switch (itemId) { // 首页 case R.id.action_home: Log.i("tag", "case 0"); mCurrentFragment = new HomeFragment(); break; // 收藏 case R.id.action_collect: Log.i("tag", "case 1"); mCurrentFragment = new UserCollectFragment(); break; // 消息 case R.id.action_message: Log.i("tag", "case 2"); mCurrentFragment = new PushMessageFragment(); break; case R.id.action_follow: Log.i("tag", "action follow"); mCurrentFragment = new UserFollowFragment(); break; } // 将mCurrentFragment对象引用压入fragment管理栈 fragmentManager.beginTransaction().add(R.id.id_layout_content_container, mCurrentFragment, title).commit(); // 存入集合中 mFragments.add(mCurrentFragment); } else { // 显示找到的fragment视图 fragmentManager.beginTransaction().show(mCurrentFragment).commit(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_search: if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) { mDrawerLayout.closeDrawer(GravityCompat.START); } startActivity(new Intent(this, SearchActivity.class)); break; } return super.onOptionsItemSelected(item); } }