/* * @(#)MainActivity.java Project:bookmanager * Date:2013-1-9 * * Copyright (c) 2013 CFuture09, Institute of Software, * Guangdong Ocean University, Zhanjiang, GuangDong, China. * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.lurencun.app.bookmanager.ui; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.lurencun.app.bookmanager.R; import com.lurencun.cfuture09.androidkit.util.ui.ExitDoubleClick; /** * @author Geek_Soledad ([email protected]) */ public class MainActivity extends Activity { private static final int MENU_CHANGE_USER = 1; private BorrowFragment mBorrowFragment; private SearchFragment mSearchFragment; private UploadFragment mUploadFragment; private ExecutorService mExecutor; private ActionBar mBar; private ActionBar.Tab mTabBorrow; private ActionBar.Tab mTabUpload; private ActionBar.Tab mTabSearch; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mExecutor = Executors.newFixedThreadPool(3); mBorrowFragment = new BorrowFragment(mExecutor); mSearchFragment = new SearchFragment(mExecutor); mUploadFragment = new UploadFragment(mExecutor); mBar = getActionBar(); mBar.setHomeButtonEnabled(true); mBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); mTabBorrow = mBar.newTab().setText(R.string.borrow); mTabSearch = mBar.newTab().setText(R.string.search); mTabUpload = mBar.newTab().setText(R.string.upload); List<Fragment> fragments = new ArrayList<Fragment>(); fragments.add(mBorrowFragment); fragments.add(mSearchFragment); fragments.add(mUploadFragment); MyTabListener tabListener = new MyTabListener(fragments); mTabBorrow.setTabListener(tabListener); mTabSearch.setTabListener(tabListener); mTabUpload.setTabListener(tabListener); // mTabBorrow.setTabListener(new MyTabListener(mBorrowFragment)); // mTabSearch.setTabListener(new MyTabListener(mSearchFragment)); // mTabUpload.setTabListener(new MyTabListener(mUploadFragment)); mBar.addTab(mTabBorrow); mBar.addTab(mTabSearch); mBar.addTab(mTabUpload); } /** * 当Fragment中的控件被点击时的回调事件。 * * @param v */ public void onButtonClick(View v) { if (mBar.getSelectedTab().equals(mTabBorrow)) { mBorrowFragment.onButtonClick(v); } if (mBar.getSelectedTab().equals(mTabUpload)) { mUploadFragment.onButtonClick(v); } } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: changeUser(); break; default: break; } return true; } /** * 更换用户。 */ private void changeUser() { startActivity(new Intent(this, LoginActivity.class)); finish(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { ExitDoubleClick.getInstance(this).doDoubleClick(2000, null); return true; } return super.onKeyDown(keyCode, event); } @Override protected void onDestroy() { super.onDestroy(); mExecutor.shutdown(); } /** * 自定义的TabListener,实现tab布局。 * * @author msdx * */ protected class MyTabListener implements ActionBar.TabListener { // private Fragment mFragment; private List<Fragment> mFragments; public MyTabListener(List<Fragment> fragments) { mFragments = fragments; FragmentTransaction ft = getFragmentManager().beginTransaction(); for (Fragment fragment : fragments) { ft.add(R.id.fragment_place, fragment, null); } ft.commit(); } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { ft.show(mFragments.get(tab.getPosition())); // ft.add(R.id.fragment_place, mFragment, null); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { // ft.remove(mFragment); ft.hide(mFragments.get(tab.getPosition())); } } }
其中BorrowFragment, SearchFragment及UploadFragment均继承自Fragment,并重写其onCreateView方法。