• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

Android

两个Fragment跳转示例

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/Android/2019/0624/554.html

 
  我们为什么要应用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                     .co妹妹it();
 
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     @Override
 
12     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             @Override
 
18             public void onClick(View arg0) {
 
19                 getFragmentManager()
 
20                     .beginTransaction()
 
21                     .addToBackStack(null)  //将目前fragment进入到回笼栈中
 
22                     .replace(R.id.container, new OtherFragment()).co妹妹it();
 
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             @Override
 
14             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     <Button
 
14         android:id="@+id/btn_back"
 
15         android:layout_width="fill_parent"
 
16         android:layout_height="wrap_content"
 
17         android:text="回笼" />
 
18 
 
19 </LinearLayout>
 
复制代码
 
  到此为止,收场了,固然很简略,却能很清楚的申明Fragment的用法。
 

上篇:上一篇:Android最佳底部导航栏,开源框架
下篇:下一篇:Android探索之HttpURLConnection网页要求