android fragment 管理器,Android Fragment 與 Fragment管理器

Android Fragment 與 Fragment管理器

首先談談Fragement的需求

過去開發人員認為界面之間的跳轉只需要使用多個activity組成就行了;

例如下圖中,在Activity-A管理的界面中單擊按鈕后,Activity-A響應事件並啟動Activity-B;而用戶在單擊后退鍵會銷毀Activity-B 並返回Activity-A界面,如此反復。

aHR0cDovL2kuaW1ndXIuY29tL2dpRU9KcE4ucG5n

但是,如果需要更加復雜的用戶界面跳轉呢?例如平板設備以及大尺寸手機的屏幕足夠大,因此可以同時容納多個界面(如平板的設置菜單等),又或者用戶通過手機查看記錄時,希望通過左右滑動來查看上一條/嚇一跳記錄等情況。

由於Android開發UI設計的靈活性需求,UI設計往往需要適應用戶或設備的需求,activity界面在必要時可以在運行時組裝或重新組裝。但是Activity本身是不具有這樣的靈活性,activity視圖可以在運行時切換,當控制視圖的代碼必須在activity中實現;因此activity還是與特定的用戶屏幕綁定在一起。

Fragement的引入

首先需要聲明一點:Fragement本身並不是視圖對象,而是一種控制器對象,activity可委派它處理一些任務。這些任務通常是管理用戶界面。

管理用戶界面的fragement又稱為UI Fragement,它自己也可以產生於布局文件的視圖。

一個簡單的Fragement例子

在新建一個空項目后,首先我們要做的就是添加依賴關系:

在File->Project Structure…菜單中打開項目結構對話框,選擇如下圖

aHR0cDovL2kuaW1ndXIuY29tL3p5SlFOSlQucG5n

點擊右上角+號按鈕,選擇Library dependency界面添加新的依賴項,如下圖顯示,選擇support-v4庫

aHR0cDovL2kuaW1ndXIuY29tLzBndW0xTE8ucG5n

新建一個Crime類

文件Crime.javaimport java.util.UUID;

//構造函數

public class Crime {

private UUID mID;

private String mTitle;

public Crime(){

mID=UUID.randomUUID();

}

public UUID getmID() {

return mID;

}

public String getmTitle() {

return mTitle;

}

public void setmTitle(String mTitle) {

this.mTitle = mTitle;

}

}

創建 UI fragement

文件frame_layout.xml<?xml version="1.0" encoding="utf-8"?>

android:id="@+id/fragement_container"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/container_title"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="@string/title_hint"/>

在初始化的Activity類中進行修改

文件CrimeActivity.javapackage com.example.administrator.criminalintent;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.os.Bundle;

public class CrimeActivity extends FragmentActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.frame_layout);

//添加UI fragment 到ragmentManager

// 獲取FragmentManager

FragmentManager fm = getSupportFragmentManager();

/*

如果在上方添加代碼出現了錯誤,請檢查導入語句,看看是否導入的是

import android.support.v4.app.*;

*/

//fragment事務

//首先,依據R.id.fragement_container向FragmentManager請求並獲取fragment

//如果希望獲取的fragment已經存在於隊列中,則直接返回它。

/*

關於為什么隊列中可能存在希望獲取的fragment的原因,主要是因為設備在回收內存時,

銷毀Android會銷毀CrimeActivity;之后重建時,會調用CrimeActivity.onCreate(...)方法。

activity被銷毀時,其FragmentManager會保留下來。這樣在重建activity時,

新的FragmentManager會首先視圖獲取保存的隊列,然后再重建fragement隊列,進而恢復到原來的狀態。

*/

Fragment fragment = fm.findFragmentById(R.id.fragement_container);

/*

如果指定容器資源ID不存在,則需要新建CrimeFragement,啟動新事務並添加到隊列中

*/

if( fragment == null){

fragment = new CrimeFragement();

fm.beginTransaction()

.add(R.id.fragement_container,fragment)

.commit();

/*

add方法是整個事務的核心;

參數1:容器視圖資源ID

參數2:新創建的CrimeFragement

*/

}

}

}

結果圖

aHR0cDovL2kuaW1ndXIuY29tLzNIR2tKcG0ucG5n

作者:黎羽鴻

2017/5/31 12:06:00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/504725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何把本地yum源给其他机器使用_如何使用系统安装盘做yum的本地源?

第一种方法&#xff1a;1。 在server1上copy所有光盘的内容到/server/rhel5/i386/&#xff0c;并对此目录做好了NFS共享&#xff0c;然后把Server下repodata改名为repodata。ins2。 # createrepo -g /misc/cd/Server/repodata。ins/comps-rhel5-server-core。xml -v /server/rh…

android 手机 报证书错误,Android设备中的SSL证书错误

了解网络科技近年来高速增长&#xff0c;对人们日常生活的影响可通过PC端和移动设备的使用增长数据可以推断。在数字化技术的今天&#xff0c;用户也希望能够在移动设备上保护网站的信息以及用户的数据。SSL证书是保护网站信息的安全协议&#xff0c;也是目前互联网站点必备的安…

手机调试_手机充值不好用?因为正在调试期

“嘀&#xff0c;余额不足&#xff0c;请充值”我们在乘坐公交车的时候&#xff0c;经常会遇到这种情况&#xff0c;上车才发现余额不足&#xff0c;下班又没时间去给公交卡充值&#xff0c;给生活带来了很大的不便&#xff0c;难道就没有更加方便快捷的方法吗&#xff1f;比如…

android 网页json数据传输,如何将JSON格式的数据从WebView传递到HTML页面

我试图将JSON格式的数据从我的Android WebView传递到HTML页面.但是,每当我尝试解析原始JSON数据时应用程序崩溃,我希望格式为{“key”&#xff1a;“data”}我的应用程序的目标是解释此JSON数据,将其形成一个值数组,并将其发送到HTML页面.这是正确的方法吗&#xff1f;这是我的…

七参数 布尔萨 最小二乘法_最小二乘法和最大似然法的联系

目录最小二乘法概念最大似然法概念两者的联系总结一、最小二乘法概念最小二乘法&#xff08;又称最小平方法&#xff09;是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据&#xff0c;并使得这些求得的数据与实际…

android 浮动按钮拖拽,小程序拖拽浮动按钮

小程序拖拽浮动按钮2019-5-22 分类: 小程序小程序 浮动 拖拽 按钮不借助movable-area自带的组件&#xff0c;实现拖拽效果wxmljs&#xff1a;var startPoint;Page({data: {buttonTop: 0,buttonLeft: 0,windowHeight: ,windowWidth: },onLoad: function (options) {var that…

axios vue 加载效果动画_vue+axios+element ui 实现全局loading加载示例

实现全局loading加载分析需求&#xff0c;我们只需要在请求发起的时候开始loading&#xff0c;响应结束的时候关闭loading&#xff0c;就这么简单 对不对&#xff1f;import axios from axios;import { Message, Loading } from element-ui;import Cookies from js-cookie;impo…

android ui自动化框架选型,Appium UI 自动化框架之我见 (开源)

APP UI Automation Framework一个基于 Appium 1.8.1、TestNG&#xff0c;Page Object 模式开发的 UI 自动化测试框架介绍文档结构图基本功能每秒生成一次截图通过 xml 配置待执行的测试用例通过 yml 指定待执行测试的设备及 Appium 端口用例执行失败自动重试&#xff0c;且重试…

长虹android电视安装apk,长虹电视通过安卓手机安装沙发管家教程

‍本文教程适用于长虹电视LED39(48/50/55)C 2080i等相类似型号&#xff1b;【安装步骤简介】安卓手机安装沙发管家手机版--手机和智能电视/盒子用同一个路由器连接--沙发管家手机版推送安装【操作方法详情】1、使用您的安卓手机下载并安装沙发管家手机版&#xff1a;http://pub…

1使用技巧_新版PubMed使用技巧1

以下分享适合小白&#xff0c;高手请绕路。PubMed是许多医学生以及科研人员必备的检索系统&#xff0c;高效的利用PubMed可以节省很多时间。本文从以下几个方面简单讲解新版PubMed的使用技巧1&#xff1a;1、PubMed基本介绍&#xff1b;2、PubMed的高级检索。后期分享使用技巧2…

android 调用系统下载apk,如何在自己的App中调用Android系统自带的安装/卸载程序...

AppUtils里面写了如何安装和卸载apk(这段代码出自这里&#xff1a;点击打开链接~)&#xff0c;这里的安装和卸载调用的是Android本身的一个安装卸载&#xff0c;所以可能页面不会太优雅&#xff0c;并不符合商业App的期望&#xff0c;如果要做到更优雅的实现&#xff0c;就要用…

switch matlab c语言,matlab switch语句使用

switch 块有条件地执行一组语句从几个选择。每个选项所涵盖的一个 case 语句。计算 switch_expression 是一个标量或字符串。计算case_expression是标量&#xff0c;标量或字符串的字符串或单元阵列。switch 块测试每个 case &#xff0c;直到其中一个 case 是 true 。case 是 …

HTML列表内容自动排序,JS实现HTML表格排序功能

本文实例为大家分享了JavaScript实现HTML表格排序功能&#xff0c;供大家参考&#xff0c;具体内容如下HTML代码&#xff1a;click meclick meclick meclick me15.437001.220阿7.0543,000炳30.62302,558,800和22.3056瞎26.310.65-63.1674子JavaScirpt代码&#xff1a;var table…

html复选框打钩行变颜色,Excel 单元格打勾会变颜色,开发工具的复选框这样玩...

Excel中的复选框除了打钩&#xff0c;打叉之外还有什么其他功能吗&#xff1f;其实&#xff0c;这里面的学问可多了&#xff0c;可造之物也非常之多。今天&#xff0c;我就利用复选框来教大家制作一个特别的表格&#xff0c;在复选框中打钩的后&#xff0c;单元格的颜色就会随着…

js怎么图表在html中显示不出来的,基于Echarts图表在div动态切换时不显示的解决方式...

简单粗暴&#xff0c;先上图&#xff0c;大概长这样&#xff1a;在使用vue时有遇到像上图下拉框change事件切换div&#xff0c;change切完后大概会变成这个样子&#xff1a;上代码&#xff1a;{{ option.text }}{{selected}}export default{name:"test",data(){retur…

【UML】第13篇 序列图(2/2)——建模的方法

目录 三、序列图建模 3.1 概述 3.2 建模的步骤 3.3 举例说明步骤 1.确定主要场景和流程 2.确定参与的对象 3.绘制序列图 4.注意事项 3.4 特殊的情况 序列图是我个人认为&#xff0c;UML中最重要的图之一。 而且序列图&#xff0c;对于业务建模&#xff0c;也有非常好…

如何创建计算机的桌面快捷方式,怎么设置桌面快捷方式,怎么创建快捷方式到桌面...

很多win7系统用户反映说遇到这样一个问题&#xff0c;就是电脑上从文件服务器创建的快捷方式就会自动被删除&#xff0c;自己重新创建之后&#xff0c;过几天重新启动win7系统的时候&#xff0c;那些快捷方式又会自动被删除不见了&#xff0c;怎么办呢&#xff0c;下面以win7 3…

哥大计算机专业 世界排名,哥伦比亚大学计算机科学硕士排名第16(2020年TFE Times排名)...

哥伦比亚大学实力介绍哥伦比亚大学除去常青藤的榜首地位&#xff0c;研究生的金融工程 更是被人们称为是金工届的magic seven 并且商学院以及MBA项目是很多人垂涎已久的。更有远近闻名的国际公共关系事物学院&#xff0c;以及新闻专业。2020年TFE Times美国计算机科学硕士排名参…

福师计算机应用基础在线作业二及答,福师《计算机应用基础》在线作业二 下列软件中属于应用软件的是.docx...

福师《计算机应用基础》在线作业二 下列软件中属于应用软件的是.docx 计算机应用基础计算机应用基础1 1 单选题单选题1 下列软件中属于应用软件的是() D A 操作系统B 编译程序C 数据库管理系统D 财务管理系统2 以下域名中&#xff0c;表示商业网的是() C A eduB cnC comD org3 …

台式计算机没有usb3.0,新装的win7没有usb驱动完美解决方法(支持usb3.0/usb3.1)

最近有很多网友问&#xff0c;为什么我新装win7系统后usb驱动&#xff0c;相关的usb鼠标键盘都不能用了怎么办&#xff1f;大家都知道&#xff0c;win10系统虽然发布了几年&#xff0c;但是由于Win7的习惯留住了不少Win7忠实用户&#xff0c;因此Win7系统的使用用户还是比较多的…