`
AaronGo
  • 浏览: 28833 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Fragment如何实现TabHost

阅读更多

TabHost是一个过时的类,它的功能可以由Fragment来实现。

 

 FragmentTransaction对fragment进行添加,移除,替换,以及执行其他动作。
从 FragmentManager 获得一个FragmentTransaction的实例 :

FragmentManager fragmentManager = getFragmentManager(); 
FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction();

 

 

一个小实例:

MainFragment.java

public class MainFragment extends Activity implements OnClickListener{
    
	private Button first, second, third;
	private FrameLayout fl;
	
	private FirstFragment ff;
	private SecondFragment sf;
	private ThirdFragment tf;
    
     @Override
    protected void onCreate(Bundle savedInstanceState){
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        first = (Button)findViewById(R.id.first_btn);
        second = (Button)findViewById(R.id.second_btn);
        third = (Button)findViewById(R.id.third_btn);
        
        fl = (FrameLayout)findViewById(R.id.fl);
        
        first.setOnClickListener(this);
        second.setOnClickListener(this);
        third.setOnClickListener(this);
        
        ff = new FirstFragment();
        sf = new SecondFragment();
        tf = new ThirdFragment();
    }
        
    @Override
    public void onClick(View v){

    	switch (v.getId()){
            case R.id.first_btn:
                switchFragment(R.id.fl, ff);
                break;
            case R.id.second_btn:
                switchFragment(R.id.fl, sf);
                break;
            case R.id.third_btn:
                switchFragment(R.id.fl, tf);
                break;
            default:
                break;
        }
    }
    
    public void switchFragment(int id, Fragment fragment){
        try{
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(id, fragment); 
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE); 
            ft.commit();// 提交
        }
        catch (Exception e){
        	e.printStackTrace();
        }
    }
}

 FirstFragment.java,SecondFragment、ThirdFragment代码相似

public class FirstFragment extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater, 
    		ViewGroup container, Bundle savedInstanceState){
        // TODO Auto-generated method stub
        View fragmentView = inflater.inflate(R.layout.first, null);

        return fragmentView;
    }
}

 main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <LinearLayout 
        android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:orientation="horizontal">
    	
	    <Button 
	        android:id="@+id/first_btn" 
	        android:layout_width="wrap_content"
	    	android:layout_height="wrap_content" 
	    	android:text="first"/>
	    
		<Button 
		    android:id="@+id/second_btn" 
		    android:layout_width="wrap_content"
	    	android:layout_height="wrap_content" 
	    	android:text="second"/>
		
		<Button 
		    android:id="@+id/third_btn" 
		    android:layout_width="wrap_content"
	    	android:layout_height="wrap_content" 
	    	android:text="third"/>

	</LinearLayout>
	
	<FrameLayout 
	    android:id="@+id/fl" 
	    android:layout_width="match_parent"
    	android:layout_height="match_parent">
	</FrameLayout>

</LinearLayout>

 first.xml,second.xml,third.xml代码相似,当然可自行布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:background="@drawable/blue">
    
	<ImageView 
	    android:id="@+id/iv"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:src="@drawable/win"/>    
    

</LinearLayout>

 效果截图:



 

  • 大小: 28.6 KB
分享到:
评论

相关推荐

    Android高级应用源码-Fragment实现TabHost效果.zip

    这个压缩包“Android高级应用源码-Fragment实现TabHost效果.zip”包含了一个使用Fragment来实现传统TabHost功能的示例。TabHost通常用于在多个相关视图之间切换,而Fragment的引入则为这一任务提供了更现代、更灵活...

    android中fragment实现tabhost标签切换效果

    在早期的Android版本中,TabHost与Activity紧密相连,但在Android 3.0(API级别11)引入Fragment后,我们可以通过Fragment来实现更灵活的TabHost效果。 在Android中,Fragment的使用使得UI的模块化更为明显,每个...

    Fragment实现TabHost效果

    本教程将详细讲解如何利用Fragment实现TabHost效果,以达到更现代、灵活的UI设计。 首先,理解Fragment是Android 3.0(API级别11)引入的一个重要概念,它代表了屏幕上的一个可重用的UI部分。与Activity相比,...

    纯代码编写的Fragment实现TabHost另加3D翻转切换

    在本项目中,“纯代码编写的Fragment实现TabHost另加3D翻转切换”展示了如何不借助XML布局文件,完全通过Java代码来创建和管理Fragment,并在TabHost之间添加动态的3D翻转切换效果。 首先,让我们深入理解`Fragment...

    安卓FragmentTab选项卡相关-Fragment实现TabHost效果.rar

    在Android开发中,`Fragment`和`TabHost`是两种重要的组件,它们分别用于构建复杂的用户界面和实现多标签切换效果。本资源“安卓FragmentTab选项卡相关-Fragment实现TabHost效果.rar”提供了使用`Fragment`来模仿...

    Fragment实现TabHost的选项卡功能

    本demo主要是用Fragment实现TabHost的功能,是完全的实现,和之前两个demo相比,这个是完全从不同的角度来实现选项卡的功能,可以看看这三篇文章,对这个demo的理解会更深刻一些...

    Fragment实现tabhost的效果

    本文将详细介绍如何使用Fragment来实现类似于TabHost的效果。 首先,我们需要了解Fragment的基本概念。Fragment是Android中的一个组件,它代表了应用界面的一部分可重用逻辑和视图。与Activity相比,Fragment更加...

    Fragment实现tabhost代码

    在现代Android开发中,`TabHost`的使用逐渐被`ViewPager`和`TabLayout`所取代,但了解如何使用`Fragment`实现`TabHost`对于理解Android历史和某些特定场景仍然很有价值。 `Fragment`是Android 3.0(API级别11)引入...

    fragment实现TabHost效果

    在Android应用开发中,`Fragment`和`TabHost`是两个关键组件,它们分别用于创建动态、可重用的UI组件和实现多标签页切换功能。`TabHost`是早期Android SDK中的一个类,用于创建带有多个选项卡的界面,每个选项卡可以...

    用Fragment实现tabHost的效果

    本篇文章将深入探讨如何使用`Fragment`来实现类似于`TabHost`的功能,以创建一个动态且灵活的用户界面。 `Fragment`是Android 3.0(API级别11)引入的一个新概念,它是应用程序界面的一部分,可以在Activity之间...

    源码 Fragment&Tab选项卡 Fragment实现TabHost效果.zip

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    使用Fragment+Tabhost实现切换

    在Android应用开发中,"使用Fragment+Tabhost实现切换"是一种常见的设计模式,它能够创建出功能丰富的用户界面,尤其适合在平板电脑和大屏幕设备上展现多面板布局。Fragment是Android 3.0(API级别11)引入的一个...

    Android fragment 内部嵌套tabhost组件

    以上就是关于"Android fragment 内部嵌套tabhost组件"的相关知识点,实际开发中还需要根据具体需求进行调整和优化,以实现最佳的用户体验。在给定的HarlanFragment示例中,可以进一步学习如何将这些概念应用于实践。

    Fragment + TabHost + RadioGroup 结合DEMO

    在Android应用开发中,`Fragment`、`TabHost`和`RadioGroup`是构建多页面、多选项交互界面的重要组件。下面将详细解释这三个组件及其结合使用的知识点。 首先,`Fragment`是Android 3.0(API级别11)引入的一个重要...

    android使用fragment替代tabhost实现分页效果

    在Android应用开发中,"使用Fragment替代TabHost实现分页效果"是一种常见的设计模式,它有助于提高代码的可维护性和灵活性。Fragment是Android SDK 3.0(API级别11)引入的一个组件,用于在大屏幕设备如平板电脑上更...

    使用Fragment+Tabhost实现网易新闻客户端的框架

    在这个过程中,`Fragment`和`TabHost`是两个核心组件,它们能有效地帮助我们实现这个目标。 首先,`Fragment`是Android SDK提供的一种组件,它允许我们在一个活动中包含多个可交互的UI部分。`Fragment`的设计目的是...

    通过Fragment+TabHost实现选项卡 顶部

    本教程将详细讲解如何利用`Fragment`和`TabHost`来实现这一功能,以创建一个名为"NavigationTabDemo"的应用。 `Fragment`是Android SDK中的一个关键组件,它代表了UI的一部分,可以独立于Activity存在,也可以在多...

Global site tag (gtag.js) - Google Analytics