一,首先,Fragment是android应用中十分重要的一个功能,十分轻量化,也类似于activity一样,是一个个布局,可以相互跳转和传递参数。但是,它运行起来十分流畅,而且易于管理,下面是在学习时候看慕课网中的一些接受:

Fragment在应用中应当是一个模块化和可重用的组件,因为Fragment定义了它自己的布局,以及通过使用它自己的生命周期回调方法定义了自己的行为,你可要将Fragment包含到多个Activity中去。

(1)Fragment可以作为Activity的一部分展现出来

(2)一个Activity可以包含多个Fragment,一个Fragment也可以在多个Activity中使用。

(3)Activity运行过程中,可以添加移除和替换Fragment

(4)Fragment可以相应自己的输入事件,并且有自己的生命周期,生命后期受宿主Activity的生命周期影响

手机和平板的屏幕差别较大,利用Fragment可以实现代码的通用度较高,这样在开发两种app时候可以改动较小实现。

二,android studio 2.2.2中带fragment的activity的创建:

在某些网站学习时候,发现在早一些的版本的as中是可以直接创建带有fragment的activity的,在1.5之后就不支持了,也不是不支持,只是不能直接选择了,在后面的步骤中可以选择。

1,首先,new一个新的工程,选择basic activity

2,然后在下一步里选择带有fragment

3,点击finish我们就完成了创建,创建完成后,我们整体的文件布局是这样子的:

4,这样子还没有完,在MainActivity中我们还需要进行页面加载的操作:

例如:我们创建完后MainActivity是这样子的(这样是无法运行的)

,我们需要在里面加一句话:

 public class MainActivity extends AppCompatActivity {

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
}); //需要添加的语句:
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().add(R.id.fragment, new MainActivityFragment()).commit();
}
}

MainActiviy

5.1   在fragment_main 中添加一个按钮,用来跳到下一个fragment页面

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_main"
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"
android:orientation="vertical"
tools:context="examples.ouc.com.fragment.MainActivityFragment"
tools:showIn="@layout/activity_main"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" /> <Button
android:text="点我"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnShowAnotherFragment" /> </LinearLayout>

fragment_main

5.2  在MainActivityFragment中对动作进行配置和代码操作:

  需要重写onCreateView,然后获取到页面中的按钮,然后添加事件监听器

public class MainActivityFragment extends Fragment {

    public MainActivityFragment() {
} @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("onCreateView");
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
rootView.findViewById(R.id.btnShowAnotherFragment).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().beginTransaction()
.addToBackStack(null)
.replace(R.id.fragment,new AnotherFragment())
.commit();
}
});

MainActivityFragment

  上面的代码是跳到第二个fragment页面,下面我们对第二个Fragment进行创建和操作:

6.1首先创建一个layout的布局文件,

  并且在里面添加一个按钮,用来点击返回上一个

  取名fragment_another

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"> <TextView
android:text="这是另一个fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView" /> <Button
android:text="BACK"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnBack" /> </LinearLayout>

fragment_another

6.2然后我们创建一个class让它继承自Fragment

  //注意Fragment一定要导入的是:

import android.support.v4.app.Fragment;
 public class AnotherFragment extends Fragment {

     @Override
public void onCreate(@Nullable Bundle savedInstanceState) {
System.out.println("onCreate...");
super.onCreate(savedInstanceState);
} @Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
System.out.println("onCreateView...");
View root = inflater.inflate(R.layout.fragment_another,container,false);
root.findViewById(R.id.btnBack).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().popBackStack();
}
});
return root;
}

AnotherFragment

6.3注意,我们里面用到了popBackStack()函数,一看便知道,他用到了栈!

  因此我们在MainActivityFragment中,我们获取到了Fragment后,我们写了一个     addtoBackStack,如果我们不需要添加后退功能,这个是不需要加的,只不是我们一点返回键,app就会退出了~

  getFragmentManager().beginTransaction()
.addToBackStack(null)
.replace(R.id.fragment,new AnotherFragment())
.commit();

7,至此,我们的fragment就完成了,可以提交到模拟器运行了~~~

      

android studio 2.2.2下fragment的创建和跳转的更多相关文章

  1. 解决 RecyclerView 在Android Studio已经导入情况下还无法实例引用问题

    系统:Windows 10 IDE::android studio 1. 问题:RecyclerView 在Android Studio已经导入情况下还无法实例引用问题 由于RecyclerView是 ...

  2. Ubuntu 14.04 64位安装Android Studio 和 genymotion (下)

    接上一篇,上回书说到,我们可以进android studio的编辑器了.感觉不错.挺好的,先不说genymotion,先看看你的android项目有没有r文件,项目有没有错误? 如果没有问题的话,下面 ...

  3. 【Android Studio安装部署系列】十六、Android studio在layout目录下新建子目录

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 一般用于分类显示不同模块的layout布局文件. 在res/layout文件夹下创建子目录 res/layout鼠标右键——New— ...

  4. Android Studio 2.2.2导入Eclipse中创建的项目

    最近随视频教程学习Android,原本都是用Adt写Android程序,中途教程换成了Android Studio,于是我自己下了android studio 2.2.2安装好,并下载好sdk,也跟着 ...

  5. Android开发之 Windows环境下通过Eclipse创建的第一个安卓应用程序(图文详细步骤)

    第一篇  windows环境下搭建创建的第一个安卓应用程序 为了方便,我这里只采用了一体包进行演示. 一.下载安卓环境的一体包. 官网下载:安卓官网(一般被墙了) 网盘下载: http://yunpa ...

  6. Android Studio同时监听多个Button实现activity跳转

    MainActivity.java: package com.example.test; import android.content.Intent; import android.os.Bundle ...

  7. Windows环境下Android Studio安装和使用教程

    Windows环境下Android Studio安装和使用教程 来源: http://www.cnblogs.com/liuhongfeng/archive/2015/12/30/5084896.ht ...

  8. Android Studio一些常用快捷键及快捷键冲突解决

    1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对的地方,希望大家 ...

  9. Android Studio的下载和安装教程(从ADT到AS)

    之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从 ...

随机推荐

  1. MR21、MR22和CK24的区别

      MR21和CK24都是用于修改物料标准价,但两者功能和用法上有所区别:MR21是直接更改单价, CK24是在CK11N或CK40N价格评估的基础上的价格核发, CK24记录价格评估, 价格评估在做 ...

  2. SPSS数据分析—因子分析

    我们知道主成分分析是一种降维方法,但是其本质上只是一种矩阵变换的过程,提取出来的主成分并不都具有实际含义,而这种含义往往是我们所需要的,接下来的因子分析可以解决这个问题 因子分析可以看做是主成分分析的 ...

  3. Java双循环break的用法

    break只跳出当前循环,也就是内循环,如果想跳出外循环有两种办法:1:for(int i = 0;i<9;i++){ //用两个breakfor(int j = 0;j<8;j++){b ...

  4. Centos下MySQL主从同步配置

    说明:由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样, 因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave ...

  5. SQL server 查询某个表在哪些存储过程(SP)中使用到

    1.查询某个表被哪些存储过程(以下简称 SP)使用到 : select distinct object_name(id) from syscomments where id in (select ob ...

  6. java的前台与后台

    技术上:前台是指web展示,webservice接口等输入输出接口,后台是指支持这些接口的程序. 例如读写数据库,读写文件,业务逻辑处理. 业务上来讲:前台是提供给最终用户使用的界面,后台是指管理使用 ...

  7. discuz手机版模板开发

    1.触屏版模板手机路径 discuz X3触屏版模板路径:/template/default/touch/forum/discuz.htm(主页面模板) discuz X3标准版模板路径:/templ ...

  8. uiscrollView UINavigation和uitabbar添加约束的问题

    首先是层次问题, 我的storyboard中 底层是一个View(viewcontroller自带)上面添加了一个UIScrollview(添加约束, 上下左右全为0), 在UIScrollview上 ...

  9. Mongodb 副本集分片(二)---mongodb副本集部署脚本详解

    分享下,最近做的一主一从一仲裁的示例,如有需要,大家可以扩展成一主两从一仲裁. 大家可以看到  我的集群名字沿用了默认的neunnm,如果是其他的话   大家注意修改. 需要辅助文件hosts.con ...

  10. Electron-使用Electron开发第一个应用

    使用Electron开发第一个应用 Electron 应用的目录结构如下: app/ ├── package.json ├── main.js └── index.html 新建一个app文件夹 将这 ...