`
貌似掉线
  • 浏览: 260503 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android使用actionbar与fragment

 
阅读更多
android使用actionbar中的tab,及fragment代码示例:
/*
 * @(#)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 (66704238@51uc.com)
 */
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方法。
分享到:
评论

相关推荐

    android actionbar切换fragment demo

    本教程将重点讨论如何在`ActionBar`中实现`Fragment`的切换,以创建一个互动丰富的Android应用。 `ActionBar`的设计目标是为用户提供一个统一且可定制的顶部导航区域。它通常包含应用图标、应用标题以及一些操作...

    Android actionBar与Fragment结合使用Demo2

    总之,`ActionBar`与`Fragment`的结合使用是Android开发中的重要技巧,它允许开发者构建响应式、易于导航的应用程序。通过熟练掌握这一技术,你能够提升应用的用户体验,同时使代码更加模块化和易于维护。

    Android actionBar与Fragment结合使用Demo

    总的来说,`ActionBar`与`Fragment`的结合使用,能够使Android应用的界面更加丰富和互动,同时提高代码的复用性。通过熟练掌握这两者,开发者可以构建出更适应多屏幕设备且易于维护的应用程序。

    Android 中ActionBar+fragment实现页面导航的实例

    * 在Android中使用支持库下的ActionBar和fragment * 在Android中使用RelativeLayout和FrameLayout布局 * 在Android中使用主题适配 技术要点: * 使用ActionBar.setNavigationMode()方法设置导航模式 * 使用...

    ActionBar和Fragment的经典实例

    在Android应用开发中,`ActionBar`和`Fragment`是两个非常关键的组件,尤其是在3.0及以上版本。它们为开发者提供了更加丰富和灵活的界面设计能力。本实例将深入探讨这两个组件的使用方法以及如何结合它们来提升用户...

    安卓新手学习ActionBar+Fragment+ViewPager的套用

    在Android应用开发中,ActionBar、Fragment和ViewPager是三个非常重要的组件,它们对于构建用户界面和实现复杂的导航功能具有重要作用。让我们深入探讨这三个组件及其在实际应用中的使用。 **ActionBar** ActionBar...

    ActionBar Fragment 结合 ViewPager 实现TabActivity

    在Android应用开发中,`ActionBar`、`Fragment`和`ViewPager`是三个非常重要的组件,它们共同作用可以创建出功能丰富的界面布局。本教程将详细解释如何利用这些组件实现一个`TabActivity`,即带有标签切换功能的活动...

    Actionbar+动态fragment导航栏

    在Android应用开发中,"Actionbar+动态fragment导航栏"是一个常见的设计模式,它结合了UI元素和数据的动态更新,以提供用户友好的交互体验。这个项目的核心知识点包括Actionbar的使用、Fragment的动态管理和网络请求...

    Android Fragment ActionBar实现tab标签切换页面

    以上就是使用`Android Fragment`和`ActionBar`实现tab标签切换页面的基本流程和关键知识点。开发者可以根据实际需求对这一过程进行扩展和定制,例如添加动画效果、自定义tab样式等。在实践中,你还可以使用`...

    仿微信5.2界面(ActionBar+ViewPager+Fragment)

    在Android应用开发中,"仿微信5.2界面(ActionBar+ViewPager+Fragment)"是一个常见的设计模式,用于构建类似微信的多页面、可滑动切换的用户界面。这个标题所涉及的知识点主要涵盖三个方面:ActionBar、ViewPager和...

    actionbar+fragment+viewpager

    在Android应用开发中,"Actionbar+Fragment+ViewPager"是一个常见的组合,用于构建高效、可扩展的用户界面。这三个组件都是Android SDK中的核心组件,它们各自有着特定的功能,并且可以协同工作来提升用户体验。 ...

    actionbar,fragment最佳实践demo

    Android学习路线(二十四)ActionBar Fragment运用最佳实践demo, 博客地址:http://blog.csdn.net/sweetvvck/article/details/38645297

    ActionBar+Fragment

    在Android开发中,`Fragment`常与`ActionBar`结合使用,以实现复杂的导航和多层级的用户界面。 在项目描述中提到的“import以后就能够直接运行,不需要改动的代码”,这可能意味着提供的代码是一个已经编译完成并且...

    ActionBar+fragment+json解析.docx

    总的来说,这个文档内容涉及了Android应用开发中的基本组件和网络数据处理,展示了如何使用`ActionBar`实现标签页导航,利用`Fragment`实现动态界面,以及通过异步任务处理`JSON`数据。这在实际开发中是非常常见的...

    Actionbar,fragment,viewpager的使用--模仿android4联系人效果

    1.几个fragment的使用,代码来自于Demo程序,可用于练习fragment 2.使用了viewpager,参照android4的通讯录代码实现,可用于练习viewPager的使用 3.里面通过getActionBar设置了tab,并去掉默认标题栏

    actionBar+viewpager+adpter+fragment

    标题中的“actionBar+viewpager+adapter+fragment”是一个经典的Android开发组合,用于构建具有可滑动页面的应用界面。在Android应用开发中,这四个组件是实现动态、交互丰富的用户界面的关键元素。让我们深入探讨...

    android fragment 使用以及嵌套使用 底部菜单和顶部菜单

    - 通信:Fragment与Activity之间可以通过setArguments(Bundle)和getArguments()传递数据,或者通过接口回调进行更复杂的交互。 2. **底部导航菜单(BottomNavigationView)**: - 使用BottomNavigationView:引入...

    Android例子源码使用ActionBar的高仿微信主界面设计

    10. **Android Support Library**:由于Android设备的碎片化,为了兼容低版本系统,我们需要使用Android Support Library中的`android.support.v7.app.ActionBar`。 在学习和实践这个示例源码时,建议逐步分析每个...

    Fragment+ActionBar

    Fragment和ActionBar都是Android3.0之后出现的,Fragment,碎片,主要是为了支持更多的UI设计在大屏幕设备上,如平板。因为现在设备的屏幕越来越大,使用Fragment可以更灵活的管理视图层次的变化。像Activity一样,...

Global site tag (gtag.js) - Google Analytics