package com.codecomb.views; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.os.Parcelable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.codecomb.events.AppExitEvent; import com.codecomb.events.ShowBroadcastEvent; import com.codecomb.ufreedom.R; import de.greenrobot.event.EventBus; public class MainActivity extends FragmentActivity implements View.OnClickListener { private ViewPager viewPager; private Button vContest; private View vAboutMe; private View vMessage; private View vBroadcast; private MyPagerAdapter pagerAdapter; private static final int ACTIVITY_ITEM_CONTEST = 0; private static final int ACTIVITY_ITEM_BROADCAST = 1; private static final int ACTIVITY_ITEM_MESSAGE = 2; private static final int ACTIVITY_ITEM_ABOUT_ME = 3; protected static final String TAG = "com.ufreedom.codecomb.uis.MainActivity"; private static final int PRESSED_BACK_TIMESPAN = 3000; private long lastBackPressedTime = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); EventBus.getDefault().register(this); initWidget(); initViewPagerListener(); updateBottomNavigateBtnState(ACTIVITY_ITEM_CONTEST); } private void initWidget() { viewPager = (ViewPager) findViewById(R.id.viewPager); pagerAdapter = new MyPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(pagerAdapter); vAboutMe = findViewById(R.id.vAboutMe); vAboutMe.setOnClickListener(this); vBroadcast = findViewById(R.id.vBroadcast); vBroadcast.setOnClickListener(this); vContest = (Button) findViewById(R.id.vContest); vContest.setOnClickListener(this); vMessage = findViewById(R.id.vMessage); vMessage.setOnClickListener(this); } private void initViewPagerListener() { viewPager .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { updateBottomNavigateBtnState(position); } }); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.vContest : viewPager.setCurrentItem(ACTIVITY_ITEM_CONTEST); break; case R.id.vBroadcast : viewPager.setCurrentItem(ACTIVITY_ITEM_BROADCAST); break; case R.id.vMessage : viewPager.setCurrentItem(ACTIVITY_ITEM_MESSAGE); break; case R.id.vAboutMe : viewPager.setCurrentItem(ACTIVITY_ITEM_ABOUT_ME); break; default : break; } } private void updateBottomNavigateBtnState(int which) { switch (which) { case ACTIVITY_ITEM_CONTEST : vContest.setSelected(true); vBroadcast.setSelected(false); vMessage.setSelected(false); vAboutMe.setSelected(false); break; case ACTIVITY_ITEM_BROADCAST : vBroadcast.setSelected(true); vContest.setSelected(false); vMessage.setSelected(false); vAboutMe.setSelected(false); break; case ACTIVITY_ITEM_MESSAGE : vMessage.setSelected(true); vContest.setSelected(false); vBroadcast.setSelected(false); vAboutMe.setSelected(false); break; case ACTIVITY_ITEM_ABOUT_ME : vAboutMe.setSelected(true); vContest.setSelected(false); vBroadcast.setSelected(false); vMessage.setSelected(false); break; default : break; } } // @Override // public boolean onCreateOptionsMenu(Menu menu) { // // Inflate the menu; this adds items to the action bar if it is present. // getMenuInflater().inflate(R.menu.home, menu); // return true; // } public class MyPagerAdapter extends FragmentPagerAdapter { List<Fragment> fragments = new ArrayList<Fragment>(); public MyPagerAdapter(FragmentManager fm) { super(fm); fragments.add(ContestsFragment.newInstance()); fragments.add(BroadcastFragment.newInstance()); fragments.add(MessageFragment.newInstance()); fragments.add(ProfileFragment.newInstance()); } @Override public Fragment getItem(int postion) { return fragments.get(postion); } @Override public int getCount() { return fragments.size(); } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { long time = System.currentTimeMillis(); if (time - lastBackPressedTime < PRESSED_BACK_TIMESPAN) { EventBus.getDefault().post(new AppExitEvent()); finish(); } else { lastBackPressedTime = time; Toast.makeText(this, R.string.msg_press_again_exit, Toast.LENGTH_SHORT).show(); } return true; } return false; } public void onEvent(ShowBroadcastEvent event) { Log.e(TAG, "显示广播"); FragmentManager fragmentManager = getSupportFragmentManager(); BroadcastDialogFragment fragment = BroadcastDialogFragment .newInstance(event.getContent()); fragment.show(fragmentManager, "BroadcastDialog"); } }