[android]p7-1 fragment学习笔记
本文源自《android权威编程指南第3版》第7章UI fragment与fragment
第7章主要内容是实现一个记录不良行为的APP(部分实现),有列表,有具体的行为内容显示。第7章主要完成单个行为详细信息的UI设置,用以理解fragment初始化的过程。
下面记录一下初始化并加载fragment的一些理解(只粘一些核心代码)
首先,我在主activity的xml文件中引入<FrameLayout>标签,就像一个占位符一样,占好一个空位,id为fragment_container。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_container"
></FrameLayout>
主activity的OnCteate方法中是这样初始化的
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fm = this.getSupportFragmentManager();
Fragment f = fm.findFragmentById(R.id.fragment_container);
if(f == null){
f = new CrimeFragment();
fm.beginTransaction()
.add(R.id.fragment_container, f)
.commit();
}
}
总结起来是这样的:
- 获取FragmentManager,是调用Activity.getSupportFragmentManager()的方法获得。
- 获得findFragmentById(这个方法等同于activity里的findviewbyid)。
- 然后将fragment加入FragmentManager的Transaction中。
- 在FragmentManager里以key, fragment的方式类似Map方式保存。
在Fragment的代码里OnCreate实现参数的初始化:
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.mCrime = new Crime();
}
在OnCreateView方法中实现功能:
View v = inflater.inflate(R.layout.fragment_crime, container, false);
this.mTitleFiled = (EditText)v.findViewById(R.id.crime_title);
this.mTitleFiled.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
/**
* 文本变化自动填充Crime类
*/
mCrime.setTitle(s.toString());
} @Override
public void afterTextChanged(Editable s) { }
});
this.mDateButton = (Button)v.findViewById(R.id.crime_date);
this.mDateButton.setText(MyDateUtil.getDateStr(mCrime.getDate(), null));
this.mDateButton.setEnabled(false);
this.mSolvedCheckBox = (CheckBox)v.findViewById(R.id.crime_solved);
this.mSolvedCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
CrimeFragment.this.mCrime.setSolved(isChecked);
}
}); return v;
获得View对象,这里不是Activity,不能直接调用,先获取View对象,再用View对象调用
View v = inflater.inflate(R.layout.fragment_crime, container, false);
然后像在Activity中初始化各个组件及相关Listener
this.mTitleFiled = (EditText)v.findViewById(R.id.crime_title);this.mTitleFiled.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
/**
* 文本变化自动填充Crime类
*/
mCrime.setTitle(s.toString());
} @Override
public void afterTextChanged(Editable s) { }
});
最后将View返回,供Activity使用。
return v;
[android]p7-1 fragment学习笔记的更多相关文章
- Android自动化测试之Monkeyrunner学习笔记(一)
Android自动化测试之Monkeyrunner学习笔记(一) 因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyr ...
- Android(java)学习笔记267:Android线程池形态
1. 线程池简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为:T1 创建线程时间, ...
- Android(java)学习笔记207:开源项目使用之gif view
1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationVie ...
- Android(java)学习笔记71:生产者和消费者之等待唤醒机制
1. 首先我们根据梳理我们之前Android(java)学习笔记70中关于生产者和消费者程序思路: 2. 下面我们就要重点介绍这个等待唤醒机制: (1)第一步:还是先通过代码体现出等待唤醒机制 pac ...
- Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Android(java)学习笔记160:Framework运行环境之 Android进程产生过程
1.前面Android(java)学习笔记159提到Dalvik虚拟机启动初始化过程,就下来就是启动zygote进程: zygote进程是所有APK应用进程的父进程:每当执行一个Android应用程序 ...
- Android(java)学习笔记179:BroadcastReceiver之 有序广播和无序广播(BroadcastReceiver优先级)
之前我们在Android(java)学习笔记178中自定义的广播是无序广播,下面我们要了解一下有序广播: 1. 我们首先了解一下有序广播和无序广播区别和联系? (1) 有序广播> 接受者 ...
- Android(java)学习笔记206:利用开源SmartImageView优化网易新闻RSS客户端
1.我们自己编写的SmartImageView会有很多漏洞,但是我们幸运的可以在网上利用开源项目的,开源项目中有很多成熟的代码,比如SmartImageView都编写的很成熟的 国内我们经常用到htt ...
- Android(java)学习笔记205:网易新闻RSS客户端应用编写逻辑过程
1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,bl ...
- Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)
1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...
随机推荐
- CF-544:部分题目总结
-------------------昨天打的重现赛,感觉是我打的发挥的最好的一场比赛了,六题都一次AC.那么就来总结一下吧 题目链接:http://codeforces.com/contest/11 ...
- 吴裕雄--天生自然python学习笔记:WEB数据抓取与分析
Web 数据抓取技术具有非常巨大的应用需求及价值, 用 Python 在网页上收集数据,不仅抓取数据的操作简单, 而且其数据分析功能也十分强大. 通过 Python 的时lib 组件中的 urlpar ...
- SHELL用法一(基本概念)
1. SHELL 编程概念入门 1)一个完整 Linux 操作系统(Linux 内核),默认用户是不能直接操作 Linux 内核,需要借助第三方的程序或者软件去操作,例如桌面工具.命令行工具(SHEL ...
- notepad++下载及安装
下载notepad++: 官网 安装:https://jingyan.baidu.com/article/154b463109921828cb8f4151.html 如果下载的64位没有插件管理器,单 ...
- NopCommerce上二次开发 触发器记录
最近要在NopCommerce上二次开发. 开发也就算了,该项目的架构设计很好,但性能不可谓不低. 扯远了,为了保持项目以后升级顺利,开次开发不允许在原项目基础上大改,只能以插件形式开发…… 因一个功 ...
- unittest(13)- 从配置文件中读取测试数据
case.config # 1. http_request.py import requests class HttpRequest: def http_request(self, url, meth ...
- Ubuntu上搭建GPU服务器
1.安装显卡驱动 2.安装CUDA 3.安装cuDNN 下载: 根据显卡类型以及操作系统,选定CUDA版本和语言设置,下载对应的显卡驱动. 驱动下载地址 安装 $ sudo ./NVIDIA-Linu ...
- Soldier and Badges
题目链接:https://vjudge.net/problem/CodeForces-546B AC代码: #include<iostream> #include<algorithm ...
- 中文字体压缩器-解决css引入的字体太大的问题
字蛛是一个中文字体压缩器 官方网站:http://font-spider.org/index.html 用于解决页面引入的css字体过大的问题 使用方法: npm i -g font-spider 在 ...
- 机器学习Week3
分类问题(classification problems) y=0 or 1 回归分析/逻辑分析(logistic regression): 目标:令h(x)位于[0,1]之间 逻辑函数/S型函数: ...