android入门——用RadioGroup实现Fragment的切换

个人网站:极客时代

用RadioGroup设置功能menu,通过点击不同的RadioButton切换不同的Fragment。

布局文件:activity_main.xml(除此之外,就是几个Fragment的布局文件了)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.Ray.testshow.MainActivity" 
    android:orientation="vertical">"


	<!-- 装fragment的容器 -->
    <FrameLayout android:id="@+id/fragment_container"
        android:layout_height="0px"
        android:layout_width="match_parent"
        android:layout_weight="7">
        
    </FrameLayout>
    
    <RadioGroup android:id="@+id/RGMenu"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1"
        android:layout_gravity="bottom"
        android:gravity="center"
        android:orientation="horizontal">"
        <!-- 将RadioGroup放在最底部,里面的按钮居中显示 -->
        
        <RadioButton style="@style/rb_style"
            android:drawableTop="@drawable/menu1_click"
            android:text="Menu1"/>
        
        <RadioButton style="@style/rb_style"
            android:drawableTop="@drawable/menu2_click"
            android:text="Menu2"/>
        
        <RadioButton style="@style/rb_style"
            android:drawableTop="@drawable/menu3_click"
            android:text="Menu3"/>
        
        <RadioButton style="@style/rb_style"
            android:drawableTop="@drawable/menu4_click"
            android:text="Menu4"/>
        
        <RadioButton style="@style/rb_style"
            android:drawableTop="@drawable/menu5_click"
            android:text="Menu5"/>
        
    </RadioGroup>

</LinearLayout>

menu1_click.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 设置RadioButton在未点击、点击及选中的时候的图片显示,以与其他的RadiosButton区分 -->
    <item android:drawable="@drawable/menu1" android:state_pressed="true"/>
    <item android:drawable="@drawable/menu1" android:state_checked="true"/>
    <item android:drawable="@drawable/menu1_be"/>
    <!-- 把默认值放在最后,否则会一直保持在默认状态无法改变 -->
</selector>



Java文件:

MainActivity.java

package com.Ray.testshow;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.RadioGroup;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		//默认的fragment
		FragmentManager fManager = getFragmentManager();
		FragmentTransaction fTransaction = fManager.beginTransaction();
		Fragment fragment = FragmentCheck.getFragmentById(1);
		fTransaction.add(R.id.fragment_container, fragment);
		fTransaction.commit();
		
		//通过点击不同的RadioButton进行切换
		RadioGroup rGroup = (RadioGroup)findViewById(R.id.RGMenu);
		rGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				// TODO Auto-generated method stub
				FragmentManager fManager = getFragmentManager();
				FragmentTransaction fTransaction = fManager.beginTransaction();
				Fragment fragment = FragmentCheck.getFragmentById(checkedId);
				
					fTransaction.replace(R.id.fragment_container, fragment);
					fTransaction.commit();
			}
		});
	}

}

FragmentCheck.java(通过传入不同的值,来生成不同的fragment对象)

package com.Ray.testshow;

import android.app.Fragment;

public class FragmentCheck {
	public static Fragment getFragmentById(int checkedID) {
		Fragment fragment = null;
		switch (checkedID) {
		case 1:
			fragment=new FragmentMenu1();
			break;

		case 2:
			fragment=new FragmentMenu2();
			break;
			
		case 3:
			fragment=new FragmentMenu3();
			break;

		case 4:
			fragment=new FragmentMenu4();
			break;
		
		case 5:
			fragment=new FragmentMenu5();
			break;
		default:
			break;
		}
		return fragment;
	}
}

其他的java文件都是fragment对应的了。

写了一个比较简单的Demo,虽然不是很好看,但是能看出怎样用的。换几张RadioButton的图片,效果会好很多,没时间去自己P了,丑些。

示例代码下载地址:

http://download.csdn.net/detail/darkxionghaizi/9078709


  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android底部导航栏的实现可以通过使用RadioGroupFragment结合使用来实现。首先,在布局文件中添加一个RadioGroup,然后在其中添加多个RadioButton,每个RadioButton代表一个导航项。接着,使用Fragment实现每个导航项对应的页面内容。在RadioGroup中设置监听器,当用户点击某个RadioButton时,切换到对应的Fragment页面。这样就可以实现一个简单的底部导航栏了。 ### 回答2: Android底部导航栏的实现一般可以通过RadioGroupFragment结合使用来完成。首先,在XML布局文件中定义一个RadioGroup,并在其中添加多个RadioButton,每个RadioButton对应导航栏中的一个选项。 接下来,在Activity中,我们需要定义一个Fragment的容器,用于加载不同的Fragment页面。在RadioGroup的选择监听器中,根据所选中的RadioButton的id,切换对应的Fragment页面。 在切换Fragment页面时,可以使用FragmentManager和FragmentTransaction来实现。通过FragmentManager的beginTransaction()方法获取一个FragmentTransaction的实例,然后使用replace()方法将容器中的Fragment替换为选中的目标Fragment,最后通过commit()方法提交事务即可完成页面切换。 为了方便管理和切换Fragment,可以定义一个Fragment的集合,用于存放所有的Fragment实例,并在选择监听器中根据RadioButton的顺序获取对应的Fragment。 另外,为了保持Fragment的状态,在切换Fragment时可以使用hide()和show()方法而不是replace()来隐藏和显示Fragment,这样可以避免Fragment被重复实例化。 总结来说,通过RadioGroupFragment的结合使用,我们可以实现Android底部导航栏的功能。通过监听RadioGroup中RadioButton的选择事件,来切换不同的Fragment页面。这样可以实现底部导航栏的选项切换,同时保持Fragment的状态。 ### 回答3: Android底部导航栏的实现可以通过使用RadioGroupFragment实现。 首先,我们可以在布局文件中创建一个包含多个RadioButton的RadioGroup,这些RadioButton将作为底部导航栏的按钮。我们可以为每个RadioButton设置图标和文本,以表示不同的导航选项。通过设置RadioGroup的布局属性可以将其放置在屏幕的底部。 接下来,我们需要创建对应的Fragment,并在Activity中使用FragmentTransaction来进行Fragment切换。在FragmentTransaction中,我们可以通过调用replace方法来替换Activity中的显示内容,将选中的RadioButton对应的Fragment显示出来。 当用户点击底部导航栏的RadioButton时,我们可以通过设置RadioGroup的OnCheckedChangeListener来监听选中项的变化。当选中项发生变化时,我们可以获取选中的RadioButton对应的Fragment,并使用FragmentTransaction来进行Fragment切换,从而显示选中的Fragment。 此外,为了更好地控制底部导航栏的切换效果,我们还可以使用fragment的缓存机制以提高切换的效率,避免每次切换都重新创建Fragment对象。 总之,通过结合RadioGroupFragment的使用,我们可以方便地实现Android底部导航栏的功能,使用户可以方便地在不同的导航选项之间进行切换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值