package com.mzoneapp.zjjmb.ui; import java.util.ArrayList; import net.simonvt.widget.MenuDrawer; import net.simonvt.widget.MenuDrawerManager; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.Window; import com.mzoneapp.zjjmb.R; import com.mzoneapp.zjjmb.api.ApiConstants; import com.mzoneapp.zjjmb.bean.TodoDocumentBean; import com.mzoneapp.zjjmb.ui.HeadlinesFragment.OnRefreshCallBack; import com.mzoneapp.zjjmb.ui.fragment.EmailFragment; import com.mzoneapp.zjjmb.ui.fragment.SearchFragment; import com.mzoneapp.zjjmb.ui.fragment.ToReadDocumentFragment; import com.mzoneapp.zjjmb.ui.fragment.TodoDocumentFragment; public class MainActivity extends SherlockFragmentActivity implements CompatActionBarNavListener,OnRefreshCallBack,View.OnClickListener{ public static ArrayList<TodoDocumentBean> docBeans; static{ docBeans = new ArrayList<TodoDocumentBean>(); TodoDocumentBean tb = new TodoDocumentBean(); tb.title = " 富阳市人民政府关于富阳市农村村民建房管理的若干意见(试行)"; tb.time = "2012年11月06日"; tb.suggess = "请会签! 徐林 2012年11月28日10时32分"; tb.dengji = "等级1"; tb.desc = "今年以来,按照县委县政府的总体部署和县政协常委会工作要点安排,县政协认真履行工作"; tb.jinbanren = "徐林 "; docBeans.add(tb); } private boolean useLogo = true; private boolean showHomeUp = false; private HeadlinesFragment mHeadlinesFragment = null; private ArticleFragment mArticleFragment = null; // Whether or not we are in dual-panel mode boolean mIsDualPane = false; // The news category and article index currently being displayed int mCatIndex; int mArtIndex; TabsAdapter mTabsAdapter; // ViewPager mViewPager; boolean mRefresh = false; private static final String STATE_MENUDRAWER = "net.simonvt.menudrawer.samples.ContentSample.menuDrawer"; private static final String STATE_ACTIVE_POSITION = "net.simonvt.menudrawer.samples.ContentSample.activePosition"; private int mActivePosition = -1; private MenuDrawerManager mMenuDrawer; private ViewPager mViewPager; Button bt1 = null; Button bt2 = null; LinearLayout top = null; void init(Bundle savedInstanceState){ if (savedInstanceState != null) { mActivePosition = savedInstanceState.getInt(STATE_ACTIVE_POSITION); } mMenuDrawer = new MenuDrawerManager(this, MenuDrawer.MENU_DRAG_WINDOW); mMenuDrawer.setContentView(R.layout.activity_viewpagersample); mMenuDrawer.setMenuView(R.layout.menu_scrollview); MenuScrollView msv = (MenuScrollView) mMenuDrawer.getMenuView(); msv.setOnScrollChangedListener(new MenuScrollView.OnScrollChangedListener() { @Override public void onScrollChanged() { mMenuDrawer.getMenuDrawer().invalidate(); } }); findViewById(R.id.item1).setOnClickListener(this); findViewById(R.id.item2).setOnClickListener(this); findViewById(R.id.item3).setOnClickListener(this); findViewById(R.id.item4).setOnClickListener(this); findViewById(R.id.item5).setOnClickListener(this); findViewById(R.id.item6).setOnClickListener(this); findViewById(R.id.item7).setOnClickListener(this); mMenuDrawer.getMenuDrawer().setTouchMode( MenuDrawer.TOUCH_MODE_FULLSCREEN); mViewPager = (ViewPager) findViewById(R.id.view_pager); mViewPager .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(final int position) { mMenuDrawer .getMenuDrawer() .setTouchMode( (position == 0) ? MenuDrawer.TOUCH_MODE_FULLSCREEN : MenuDrawer.TOUCH_MODE_NONE); if(position == 0){ bt1.performClick(); }else if(position == 1){ bt2.performClick(); } } }); mTabsAdapter = new TabsAdapter(this, mViewPager); // final ActionBar ab = getSupportActionBar(); // // Bundle bundle = new Bundle(); // bundle.putString(ApiConstants.TYPE, ApiConstants.ANNOUNCEMENT); // HeadlinesFragment fr1 = new HeadlinesFragment(); // fr1.setArguments(bundle); // mTabsAdapter.addTab(fr1); //// mTabsAdapter.addTab(ab.newTab().setText("通知公告"), //// HeadlinesFragment.class, bundle); // bundle = new Bundle(); // bundle.putString(ApiConstants.TYPE, ApiConstants.IN_DYNAMIC); // fr1 = new HeadlinesFragment(); // fr1.setArguments(bundle); // mTabsAdapter.addTab(fr1); // mTabsAdapter.addTab(ab.newTab().setText("局内动态"), // HeadlinesFragment.class, bundle); bt1 = (Button)findViewById(R.id.btn_id1); bt2 = (Button)findViewById(R.id.btn_id2); top = (LinearLayout)findViewById(R.id.top); bt1.setEnabled(false); bt1.setOnClickListener(frameBtnClick(bt1)); bt2.setOnClickListener(frameBtnClick(bt2)); findViewById(R.id.item2).performClick(); mMenuDrawer.getMenuDrawer().peekDrawer(); mMenuDrawer.getMenuDrawer().setDropShadowEnabled(false); // mViewPager.setAdapter(mTabsAdapter); } private View.OnClickListener frameBtnClick(final Button btn){ return new View.OnClickListener(){ public void onClick(View v) { if(v == bt1){ mViewPager.setCurrentItem(0); bt1.setEnabled(false); } else{ bt1.setEnabled(true); } if(v == bt2){ mViewPager.setCurrentItem(1); bt2.setEnabled(false); } else bt2.setEnabled(true); } }; } @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); super.onCreate(savedInstanceState); ApiConstants.createInstance(); // TODO: 更改创建时间 init(savedInstanceState); // requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); // setContentView(R.layout.main_layout); // find our fragments mArticleFragment = (ArticleFragment) getSupportFragmentManager() .findFragmentById(R.id.article); // Determine whether we are in single-pane or dual-pane mode by testing // the visibility // of the article view. View articleView = findViewById(R.id.article); mIsDualPane = articleView != null && articleView.getVisibility() == View.VISIBLE; ActionBar ab = getSupportActionBar(); ab.setDisplayHomeAsUpEnabled(true); // Register ourselves as the listener for the headlines fragment events. // mHeadlinesFragment.setOnHeadlineSelectedListener(this); // Set up headlines fragment // mHeadlinesFragment.setSelectable(mIsDualPane); // restoreSelection(savedInstanceState); } @Override public boolean onPrepareOptionsMenu (Menu menu) { if (mRefresh) menu.getItem(0).setVisible(false); else menu.getItem(0).setVisible(true); return true; } @Override public void setProgressBar(boolean refresh) { setSupportProgressBarIndeterminateVisibility(mRefresh = refresh); invalidateOptionsMenu(); } /** Restore category/article selection from saved state. */ void restoreSelection(Bundle savedInstanceState) { if (savedInstanceState != null) { setNewsCategory(savedInstanceState.getInt("catIndex", 0)); if (mIsDualPane) { int artIndex = savedInstanceState.getInt("artIndex", 0); // mHeadlinesFragment.setSelection(artIndex); // onHeadlineSelected(artIndex); } } } /** * Sets the displayed news category. * * This causes the headlines fragment to be repopulated with the appropriate * headlines. */ void setNewsCategory(int catIndex) { mCatIndex = catIndex; // mHeadlinesFragment.loadCategory(catIndex); // If we are displaying the article on the right, we have to update that // too if (mIsDualPane) { // mArticleFragment.displayArticle(null); } } @Override public void onStart() { super.onStart(); setNewsCategory(0); } @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.activity_main, menu); return true; } private void showTabsNav() { ActionBar ab = getSupportActionBar(); if (ab.getNavigationMode() != ActionBar.NAVIGATION_MODE_TABS) { ab.setDisplayShowTitleEnabled(true); ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); } } // @Override // public void onHeadlineSelected(int index) { // mArtIndex = index; // if (mIsDualPane) { // // display it on the article fragment // mArticleFragment.displayArticle(null); // } else { // // use separate activity // Intent i = new Intent(this, ArticleActivity.class); // i.putExtra("catIndex", mCatIndex); // i.putExtra("artIndex", index); // startActivity(i); // } // } @Override public void onCategorySelected(int catIndex) { setNewsCategory(catIndex); } /** Save instance state. Saves current category/article index. */ @Override protected void onSaveInstanceState(Bundle outState) { outState.putInt("catIndex", mCatIndex); outState.putInt("artIndex", mArtIndex); super.onSaveInstanceState(outState); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: if(mMenuDrawer.getDrawerState() == MenuDrawer.STATE_OPEN){ mMenuDrawer.closeMenu(); }else { mMenuDrawer.openMenu(); } return true; case R.id.menu_reflesh: mTabsAdapter.refresh(); return true; default: return super.onOptionsItemSelected(item); } } public class TabsAdapter extends FragmentPagerAdapter { private final Context mContext; // private final ActionBar mActionBar; private final ViewPager mViewPager; // private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>(); private final ArrayList<Fragment> fragments = new ArrayList<Fragment>(); final class TabInfo { private final Class<?> clss; private final Bundle args; TabInfo(Class<?> _class, Bundle _args) { clss = _class; args = _args; } } public TabsAdapter(SherlockFragmentActivity activity, ViewPager pager) { super(activity.getSupportFragmentManager()); mContext = activity; // mActionBar = activity.getSupportActionBar(); mViewPager = pager; mViewPager.setAdapter(this); } public void destroyAllItem() { // int mPosition = mViewPager.getCurrentItem(); int mPositionMax = getCount(); for (int i = 0; i < mPositionMax; i++) { try { Object objectobject = this.instantiateItem(mViewPager, i); if (objectobject != null) destroyItem(mViewPager, i, objectobject); } catch (Exception e) { } } this.fragments.clear(); // mViewPager.setOnPageChangeListener(null); } @Override public void destroyItem(ViewGroup container, int position, Object object) { super.destroyItem(container, position, object); FragmentManager manager = ((Fragment) object).getFragmentManager(); if (position <= getCount() && manager != null) { FragmentTransaction trans = manager.beginTransaction(); trans.remove((Fragment) object); trans.commit(); } } public void addTab(Fragment fragment){ fragments.add(fragment); notifyDataSetChanged(); } // public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) { // TabInfo info = new TabInfo(clss, args); // tab.setTag(info); // mTabs.add(info); // mActionBar.addTab(tab); // notifyDataSetChanged(); // } public void refresh(){ Fragment fragment = (Fragment)instantiateItem(mViewPager, mViewPager.getCurrentItem()); if(fragment instanceof HeadlinesFragment){ ((HeadlinesFragment)fragment).refresh(); } // mViewPager.gett } @Override public int getItemPosition(Object object) { return POSITION_NONE; } @Override public int getCount() { return fragments.size(); } @Override public Fragment getItem(int position) { // TabInfo info = mTabs.get(position); // Fragment fragment = Fragment.instantiate(mContext, info.clss.getName(), // info.args); Fragment fragment = fragments.get(position); if(fragment instanceof HeadlinesFragment){ ((HeadlinesFragment)fragment).setRefreshCallBack(MainActivity.this); } return fragment; } } @Override public void onClick(View v) { mMenuDrawer.setActiveView(v); mMenuDrawer.closeMenu(); ActionBar ab = getSupportActionBar(); Bundle bundle = null; mTabsAdapter.destroyAllItem(); switch (v.getId()) { case R.id.item1: // 公文查询 setTitle("公文查询"); SearchFragment search = new SearchFragment(); search.setArguments(bundle); mTabsAdapter.addTab(search); bt1.setText("公文查询"); mRefresh = true; invalidateOptionsMenu(); break; case R.id.item2: // 通知公告 setTitle("通知公告"); break; case R.id.item3: // 我的待办 setTitle("我的待办"); TodoDocumentFragment todoDocumentFragment = new TodoDocumentFragment(this); mTabsAdapter.addTab(todoDocumentFragment); bt1.setText("待办事宜"); ToReadDocumentFragment toReadDocumentFragment=new ToReadDocumentFragment(this); mTabsAdapter.addTab(toReadDocumentFragment); bt2.setText("待阅通知"); break; case R.id.item4: // 动态信息 setTitle("动态信息"); bundle = new Bundle(); //局内动态 bundle.putString(ApiConstants.TYPE, ApiConstants.IN_DYNAMIC); HeadlinesFragment fr1 = new HeadlinesFragment(); fr1.setArguments(bundle); mTabsAdapter.addTab(fr1); bt1.setText("局内动态"); //工作动态 bundle = new Bundle(); bundle.putString(ApiConstants.TYPE, ApiConstants.WORK_DYNAMIC); fr1 = new HeadlinesFragment(); fr1.setArguments(bundle); mTabsAdapter.addTab(fr1); bt2.setText("工作动态"); break; case R.id.item5: // 电子邮件 setTitle("电子邮件"); EmailFragment email = new EmailFragment(); email.setArguments(bundle); mTabsAdapter.addTab(email); bt1.setText("电子邮件"); break; case R.id.item6: // 信息刊物 setTitle("信息刊物"); break; case R.id.item7: // 通讯录 setTitle("全市通讯录"); break; default: break; } if(mTabsAdapter.getCount() == 2){ top.setVisibility(View.VISIBLE); }else{ top.setVisibility(View.GONE); } // mTabsAdapter.notifyDataSetChanged(); // getSupportFragmentManager().beginTransaction() // .replace(R.id.content_frame, newContent).commit(); } }