打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android学习笔记(七)两个Fragment简单跳转示例

  在前两篇博文中分别介绍了Fragment得基础和Fragment的生命周期,然而说了这么多Fragment到底怎么用呢以及我们为什么要使用Fragment?本篇博文将主要探讨这两个问题,首先说下在APP中有这好好Activity,跳转起来有那么简单,我们为什么还要使用Fragment呢?这是因为Fragment相对Activity而言更加的轻量级,使用起来也更加灵活,在一个程序的内部界面切换,尽可能的用Fragment代替Activity会让我们的APP运行起来更加的流畅,更加的高效,同时也提高了界面的复用性。而却Fragment在适应多尺寸屏幕方面表现也非常优秀。

  首先看一下栗子,非常简单的一个小示例,效果图如下:

  

  

  体验一下就会发现,两个Fragment跳转起来要比Activity跳转的速度快很多。

  MainActivity.java代码如下:

 1 /** 2  * MainActivity 主界面 3  * @author codingblock 2015/09/14 4  * 5  */ 6 public class MainActivity extends ActionBarActivity { 7  8     @Override 9     protected void onCreate(Bundle savedInstanceState) {10         super.onCreate(savedInstanceState);11         setContentView(R.layout.activity_main);12         if (savedInstanceState == null) {13             getSupportFragmentManager()14                     .beginTransaction()15                     .add(R.id.container, new MainFragment())16                     .commit();17         }18     }19 }

  在MainActivity首先通过getSupportFragmentManager()方法获取FragmentTransaction的对象,然后用add()方法将MainFragment加载进来,其中引用的布局文件activity_main.xml如下:

1 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"2     xmlns:tools="http://schemas.android.com/tools"3     android:id="@+id/container"4     android:layout_width="match_parent"5     android:layout_height="match_parent"6     tools:context="com.codingblock.learnfragment.MainActivity"7     tools:ignore="MergeRootFrame" />

  下面是MainFragment的代码:

 1 /** 2  * MainFragment 主Fragment 3  * @author codingblock 2015/09/14 4  * 5  */ 6 public class MainFragment extends Fragment { 7  8     public MainFragment() { 9     }10 11     @Override12     public View onCreateView(LayoutInflater inflater, ViewGroup container,13             Bundle savedInstanceState) {14         View rootView = inflater.inflate(R.layout.fragment_main, container, false);15         rootView.findViewById(R.id.btn_show_other).setOnClickListener(new OnClickListener() {16             17             @Override18             public void onClick(View arg0) {19                 getFragmentManager()20                     .beginTransaction()21                     .addToBackStack(null)  //将当前fragment加入到返回栈中22                     .replace(R.id.container, new OtherFragment()).commit();23             }24         });25         return rootView;26     }27 }

  在这个Fragment放了一按钮用于跳转到另一个Fragment,然后通过FragmentTransaction对象的replace()方法让OtherFragment把当前Fragment替换掉,在这里需要注意的是,如果想让程序可以通过后退方式显示上一个Fragment的话,需要在替换之前通过addToBackStack()把当前Fragment加入到返回栈中。

  它的布局文件fragment_main.xml代码如下:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     xmlns:tools="http://schemas.android.com/tools" 3     android:layout_width="match_parent" 4     android:layout_height="match_parent" 5     android:orientation="vertical" 6     tools:context="com.codingblock.learnfragment.MainActivity$PlaceholderFragment" > 7  8     <Button 9         android:id="@+id/btn_show_other"10         android:layout_width="fill_parent"11         android:layout_height="wrap_content"12         android:text="跳转到另一个Fragment" />13 14 </LinearLayout>

  最后一个OtherFragment代码如下:

 1 /** 2  * OtherFragment 另一个Fragment 3  * @author codingblock 2015/09/14 4  * 5  */ 6 public class OtherFragment extends Fragment { 7      8     @Override 9     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {10         View rootView = inflater.inflate(R.layout.fragment_other, container, false);11         rootView.findViewById(R.id.btn_back).setOnClickListener(new OnClickListener() {12             13             @Override14             public void onClick(View arg0) {15                 //从栈中将当前fragment推出16                 getFragmentManager().popBackStack();17             }18         });19         return rootView;20     }21 }

  程序跳转到这个Fragment之后,如果想返回上一个MainFragment我们可以点击后退键,也可以为一个按钮绑定一个单击事件用FragmentTransaction的popBackStack()方法将当前的Fragment推出栈即可。

  它的布局文件代码如下:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     xmlns:tools="http://schemas.android.com/tools" 3     android:layout_width="match_parent" 4     android:layout_height="match_parent" 5     android:orientation="vertical" > 6  7     <TextView 8         android:id="@+id/tv_show" 9         android:layout_width="wrap_content"10         android:layout_height="wrap_content"11         android:text="这是另一个Fragment" />12 13     <Button14         android:id="@+id/btn_back"15         android:layout_width="fill_parent"16         android:layout_height="wrap_content"17         android:text="返回" />18 19 </LinearLayout>

  到此为止,栗子就结束了,虽然很简单,却能很清楚的说明Fragment的用法。

  声明:欢迎转载,转载时请附上本文链接。

   

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
通过FragmentActivity去实现ActionBar的Tab分版 实测成功【原创】
Android Jetpack 之Navigation Architecture Component...
Android Jetpack - 使用 Navigation 管理页面跳转
ANDROID中FRAGMENT的两种创建方式
Android开发中巧用Activity和Fragment – 码农网
Android中Fragment的应用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服