Fragment+Activity之间相互切换
2016-05-25 18:57
483 查看
今天接触到Fragment碎片之间的切换,做个了简易的实现。
activity_main.xml文件:
上面的布局主要在MainActivity展示Fragment切换界面效果,背景为fragment1_selector主要是实现点击按钮后切换图片,方便用户观看当前的功能。
在res文件夹下新建一个drawable文件夹新建fragment1_selector.xml
代码:
MainActivity.java代码如下:
定义一个Fragment1继承于android.support.v4.app.Fragment;
这里只列举一个Fragment1文件,剩余三个大同小异。
fragment1.xml布局文件代码如下:
以上就是实现Fragment之间相互切换的详细步骤
源码下载
activity_main.xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#E8E8E8" android:orientation="vertical" tools:context=".MainActivity" > <FrameLayout android:id="@+id/fl_contains" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" > </FrameLayout> <RadioGroup android:id="@+id/rg" android:layout_width="fill_parent" android:layout_height="60dp" android:background="#FFFFFF" android:orientation="horizontal" > <RadioButton android:id="@+id/rb_menu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawableTop="@drawable/fragment1_selector" android:gravity="center_horizontal" android:paddingTop="5dp" android:text="菜单" android:textColor="#030303" /> <View android:layout_width="1dip" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:background="#E8E8E8" /> <RadioButton android:id="@+id/rb_find" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawableTop="@drawable/fragment2_selector" android:gravity="center_horizontal" android:paddingTop="5dp" android:text="发现" android:textColor="#030303" /> <View android:layout_width="1dip" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:background="#E8E8E8" /> <RadioButton android:id="@+id/rb_smart_service" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawableTop="@drawable/fragment3_selector" android:gravity="center_horizontal" android:paddingTop="5dp" android:text="服务" android:textColor="#030303" /> <View android:layout_width="1dip" android:layout_height="match_parent" android:layout_gravity="center_horizontal" android:background="#E8E8E8" /> <RadioButton android:id="@+id/rb_my" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:drawableTop="@drawable/fragment4_selector" android:gravity="center_horizontal" android:paddingTop="5dp" android:text="我的" android:textColor="#030303" /> </RadioGroup> </LinearLayout>
上面的布局主要在MainActivity展示Fragment切换界面效果,背景为fragment1_selector主要是实现点击按钮后切换图片,方便用户观看当前的功能。
在res文件夹下新建一个drawable文件夹新建fragment1_selector.xml
代码:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_checked="true" android:drawable="@drawable/icon_function_press"></item> <item android:drawable="@drawable/icon_function"></item> </selector>
MainActivity.java代码如下:
import com.example.fragment.Fragment1; import com.example.fragment.Fragment2; import com.example.fragment.Fragment3; import com.example.fragment.Fragment4; import com.example.fragmenttest.R; import android.os.Bundle; import android.content.Context; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.view.Menu; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; public class MainActivity extends FragmentActivity implements OnCheckedChangeListener{ private FragmentManager fm; private FragmentTransaction beginTransaction; private RadioGroup rg; //定义按钮组 private RadioButton rb; //定义按钮 Context context; // Fragment1 fragment1; Fragment2 fragment2; Fragment3 fragment3; Fragment4 fragment4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rg = (RadioGroup) findViewById(R.id.rg); rg.setOnCheckedChangeListener(this); rb = (RadioButton) findViewById(R.id.rb_menu); rb.setChecked(true); // 第一个菜单默认被选择 } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto-generated method stub FragmentManager fragmentManager = this.getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); /***** 1.隐藏所有的Fragment ****/ if (fragment1 != null) { fragmentTransaction.hide(fragment1); } if (fragment2 != null) { fragmentTransaction.hide(fragment2); } if (fragment3 != null) { fragmentTransaction.hide(fragment3); } if (fragment4 != null) { fragmentTransaction.hide(fragment4); } /***** 2.根据用户选择的id值,显示某个Fragement *****/ switch (checkedId) { case R.id.rb_menu: //点击《菜单》按钮 if (fragment1 == null) { fragment1 = new Fragment1(); fragmentTransaction.add(R.id.fl_contains, fragment1); } else { fragmentTransaction.show(fragment1); } break; case R.id.rb_find: //《发现》按钮 if (fragment2 == null) { fragment2 = new Fragment2(); fragmentTransaction.add(R.id.fl_contains, fragment2); } else { fragmentTransaction.show(fragment2); } break; case R.id.rb_smart_service: //《智能服务》按钮 if (fragment3 == null) { fragment3 = new Fragment3(); fragmentTransaction.add(R.id.fl_contains, fragment3); } else { fragmentTransaction.show(fragment3); } break; case R.id.rb_my: //《我的》按钮 if (fragment4 == null) { fragment4 = new Fragment4(); fragmentTransaction.add(R.id.fl_contains, fragment4); } else { fragmentTransaction.show(fragment4); } break; } fragmentTransaction.commit(); } }
定义一个Fragment1继承于android.support.v4.app.Fragment;
package com.example.fragment; import com.example.fragmenttest.R; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment1 extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment1, container, false); return view; }; }
这里只列举一个Fragment1文件,剩余三个大同小异。
fragment1.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="#FFF5EE"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Fragment1" android:textSize="35dp" android:layout_gravity="center_horizontal" /> </LinearLayout>
以上就是实现Fragment之间相互切换的详细步骤
源码下载
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories