关于学习《第一行代码》中发现的问题,不敢说是错误,应该是郭霖大神笔误。麻烦各位大神来教训晚辈。。。

_第一处问题:在fragment一章里关于动态加载fragment部分中,要添加的fragment类的代码如下
public class Fragment_3 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.right_second_fragment, container);
return view;
}
}
###########################################################
这是按钮中的事件监听器中的FragmentTransaction里的方法:
//tran.replace(R.id.linear, frag);
tran.add(R.id.linear, frag);
这是书中原代码,它是用replace方法,可是这样我试过,会出现java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.错误,然后我按照自己的理解把上述代码中的container改成null后程序正常运行无错误,我就抱着“指定的父容器资源和container冲突了”的问号试着去寻找答案,发现FragmentTransaction的replace和add方法都是abstract方法,然后我就不知道它俩为什么会冲突了。求解决...
第二个问题:上面说道我把container改成null后程序无错了,然后我按钮的监听事件里写的是add方法,然后我一直点他就会一直添加同一个fragment,这很正常,我疑问的地方是我换成replace方法后,点击按钮也会添加一个fragment,而且再此点击没有变化(也就是只能添加一个),我的问题是,为什么他不是替换掉原有的fragment而是添加呢,而且添加还只能添加一次,而且如果replace也是添加的作用,既然add能添加了,还要replace方法有何用?
附replace方法时运行程序点击按钮后的截图:
图片说明
附add方法时运行程序点击按钮后的截图:
图片说明

5个回答

没办法了,既然被提问了那我就来回答一下吧,虽然已经是老贴子了。
先说第一个问题,你的这个写法和《第一行代码》里要求的写法并不一样:

View view = inflater.inflate(R.layout.right_second_fragment, container);

第二个参数传入了container,这就是说明要把container设置为view的父布局,而一个view如果有了父布局,它还怎么能再被添加到另一个布局中呢?所以就会报 java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.这个错误,很好理解。
而如果改成null的话,就不给view添加父布局了,那么就不会出现错误了。而第一行代码里面要求的写法是:

View view = inflater.inflate(R.layout.right_second_fragment, container, false);

第三个参数传入false也可以正常工作,具体原因可以参考我的一篇文章 http://blog.csdn.net/guolin_blog/article/details/12921889

再来说第二个问题,接口名字的设计很大程度上就能直接反应出这个接口是用来干什么的。那么很明显,add()方法顾名思义就是用来添加的,所以你add一个Fragment,那界面上就会出现一个Fragment。类似地,replace()方法很明显就是用来替换的,你原先容器里已经有一个Fragment了,那么就会把原先的替换掉,换成你指定的新Fragment,而如果原先容器是空的,那么也会用你指定的新Fragment去填充容器,看上去就好像是add了一样,每个接口都是有它自己使用的场景的,Android不会随便加一些没有意义的接口在SDK里面。

qq_37299249
Vove_7 为什么我在activity_main.xml 右fragment 的不写name属性,启动会停止运行,
2 年多之前 回复
aa4100123
aa4100123 郭神我爱你。
3 年多之前 回复

指定的父容器资源和container冲突了
不是的

是子控件已经有父控件了,你又把它添加到另一个容器中,所以报错了。
R.id.linear不知道在哪里定义的,它代表一个唯一的控件id,它是替换判断的关键。

u012504392
Curry_Hardy 是啊,就是那个onCreateView方法里的container已经成为它的父控件了,后来add方法里又指定了一个父控件,R.id.linear定义在主界面的xml中,截图在下面
3 年多之前 回复

第一个问题在 inflater.inflate(R.layout.right_second_fragment, container);添加个false参数试试。第二个问题,replace的作用相当于remove和add的复合,明白了吧。

u012504392
Curry_Hardy 第一个问题我已经解决了,我就是把container改成了null就行了,不过书中没改。关于replace,它并没有移除任何fragment啊,截图中的绿色部分就是原先已经存在的fragment,并没有移除啊
3 年多之前 回复

虽然没看到源码 但是感觉。。。。。 郭神会粗来解答的

主Activity的xml截图:
图片说明

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
郭霖大神第一行代码中关于POST请求的代码
调试过程中发现POST请求中无法触发View控件,也郭霖的第一行代码里面也没给全POST请求的代码,查了诸多资料都没用相关解释,求大神解答rn下面附上布局代码,和java类代码rnactivity_main.xmlrnrnrn rnrnrn rnrnrn rnrnRegister.javarnpackage com.example.okhttp;rnimport android.support.v7.app.AppCompatActivity;rnimport android.os.Bundle;rnimport android.view.View;rnimport android.widget.Button;rnimport android.widget.TextView;rnrnimport java.io.BufferedReader;rnimport java.io.DataOutputStream;rnimport java.io.IOException;rnimport java.io.InputStream;rnimport java.io.InputStreamReader;rnimport java.net.HttpURLConnection;rnimport java.net.URL;rnrnpublic class Register extends AppCompatActivity implements View.OnClickListenerrn TextView registerText;rn @Overridern protected void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn setContentView(R.layout.activity_main);rn Button sendRegister=(Button)findViewById(R.id.register);rn registerText=(TextView)findViewById(R.id.register_text);rn sendRegister.setOnClickListener(this);rn rnrn @Overridern public void onClick(View v) rn if(v.getId()==R.id.register)rn sendRequestWithHttpURLConnection();rn rnrn rn private void sendRequestWithHttpURLConnection()rn new Thread(new Runnable() rn @Overridern public void run() rn HttpURLConnection connection=null;rn BufferedReader reader=null;rn tryrn URL url=new URL("http://www.qq.com");rn connection=(HttpURLConnection)url.openConnection();rn connection.setRequestMethod("POST");rn DataOutputStream out=new DataOutputStream(connection.getOutputStream());rn out.writeBytes ("userid=id&password=123&username=qxl");rnrnrnrn connection.setReadTimeout(8000);rnrn InputStream in=connection.getInputStream();rnrn reader=new BufferedReader(new InputStreamReader(in));rn StringBuilder response=new StringBuilder();rn String line;rn while((line=reader.readLine())!=null)rn response.append(line);rn rn showResponse(response.toString());rn catch (Exception e)rn e.printStackTrace();rn finally rn if (reader != null) rn try rn reader.close();rn catch (IOException e) rn e.printStackTrace();rn rn rn if (connection != null) rn connection.disconnect();rn rn rn rn ).start();rn rnrn private void showResponse(final String response)rn runOnUiThread(new Runnable() rn @Overridern public void run() rn registerText.setText(response);rn rn );rn rn
第一行代码——Android_郭霖
第一行代码——Android,PDF格式,高清
第一行代码—Android_郭霖
第一行代码—Android_郭霖 高清pdf版 android最佳入门书籍
第一行代码——Android(郭霖)
添加目录(可直接点击导航),删除水印等不相关的东西,字体、页码、排版与纸质版书完全一样,郭霖大牛所著,Android开发入门级教材。
郭霖第一行代码源码
郭霖全套源码
郭霖第一行代码PDF
很好不错
郭霖的“第一行代码”android随书代码
根据网上整理的郭霖的“第一行代码”android随书代码(eclipse版的)
第一行代码 郭霖 高清pdf
Android 学习资料 共同努力
第一行代码pdf及源码 郭霖
第一行代码pdf及源码 郭霖,推荐初学者的书及源码
《第一行代码——Android》作者郭霖源码
【3】第3章 软件也要拼脸蛋,UI开发的点点滴滴 【3.1】UIWidgetTest package com.example.uiwidgettest; import android.support.v7.app.ActionBarActivity; import android.app.Activity; import android.app.AlertDialog; import and
《第一行代码》作者郭霖大神安卓问题解答
列举了几个郭霖大神解答的问题
郭霖博客学习
标题郭霖 CSDN 小目标:每周3篇,18年看完104篇。怎么才能知道自己手机屏幕的密度呢?你可以使用如下方法先获取到屏幕的dpi值: float xdpi = getResources().getDisplayMetrics().xdpi; float ydpi = getResources().getDisplayMetrics().ydpi;标题项目结构分析 dpi详解: mipma
拜读郭霖大神《第一行代码——第二版》笔记——你的第一行代码
写在前面: 用三个月的时间断断续续终于拜读完郭霖大神的《第一行代码——第二版》,从一个hello world的菜鸟,跟随书中一步一个脚印,到如今对android能有一个大概的理解。现在回过头看,那些曾经陌生的变得有些熟悉了,而原来熟悉的变得更透彻了。也正是基于这本好书,我决定趁尚有余温,来写这个读书笔记。android开发,在路上!Android系统架构 以上Android系统架构图源自
第一行代码-android:郭霖-第二版高清电子书
点击下载: 《第一行代码Adroid》第二版高清电子书 源码下载地址:https://blog.csdn.net/qq_37899132/article/details/89222574 简介: 本书被Android开发者誉为Android学习经典。全书系统全面、循序渐进地介绍了Android软件开发的知识、经验和技巧。 第2版基于Android 7.0对第1版进行了全面更新,将所有...
第一行代码第二版(郭霖著)笔记之第十一章(百度地图)
这篇笔记主要包含"基于位置的服务简介","获取发布版SHA1","确定自己位置的经纬度","选择定位模式","显示看得懂的定位信息","显示百度地图","移动到我的位置","让‘我’显示在地图上"这几个方面的内容。建议书籍和笔记结合着看,事半功倍。希望读完这篇笔记,大家能对百度地图的基本用法有一个深刻的印象,对实际开发起到促进开发的作用。
郭霖大神的6篇博客笔记汇总
Android状态栏微技巧,带你真正理解沉浸式模式   http://blog.csdn.net/guolin_blog/article/details/51763825 Android弹幕功能实现,模仿斗鱼直播的弹幕效果    http://blog.csdn.net/guolin_blog/article/details/51933728 其实并不复杂,我们只需要首先在布局中放置一个显
郭霖大神的Litepal数据库的用法
郭霖大神的Litepal数据库的用法 注解易懂 可以判断存入数据是否已存在,如果存在就不插入,不存在就插入.拿走就用的那种....
各位大神来看看!
这是我做的一个作业:rn#includernusing namespace std;rnstruct datarnrn char name[20];rn long number,score;rn;rnint main()rnrn struct data men[10];rn int i;rn cout<<"请分别输入10个学生的姓名、学号、成绩,中间用空格隔开:"<>men[i].name>>men[i].number>>men[i].score;rn rn cout<<"不及格的学生如下:\\n";rn for(i=1;i<11;i++)rn rn if(men[i].score<60)rn cout<
郭大神属性动画中代码
郭大神博客http://blog.csdn.net/guolin_blog/article/details/43816093所写案例,整理。
Android第二行代码(郭霖全书源代码)
Android第二行代码(郭霖全书源代码)
郭霖第二行代码---源代码.rar
郭霖第二行代码---源代码.rar,,,,,,,,,,,,,,
各位大神来帮帮忙,java
9.字符串右移n位,例如 "hello world" 右移两位 后ldhello worn 要求写一个方法实现此功能,方法的格式是n String moveToRight(String str,int position)n str:需要移动的字符串n p:右移的位数n
跟随郭霖学Volley
volley 下载导入volleyjar 学习地址: https://blog.csdn.net/guolin_blog/article/details/17482095 2013在Google I/O大会提出 github地址: https://github.com/google/volley 下载volley导入到as 具体的操作是: project模式下 具体看图: 之后的操作是打开l...
郭霖的LitePal版本历程
官方(持续更新…):https://github.com/LitePalFramework/LitePal Android数据库高手秘籍(零)——前言 http://blog.csdn.net/guolin_blog/article/details/38083103 Android数据库高手秘籍(一)——SQLite命令 http://blog.csdn.net/guolin...
各位大神来帮帮我解决下
[align=center][/align] [Function(Name = "proc_books")]rn public IMultipleResults proc_books(rn [Parameter(Name = "@bookname", DbType = "varchar(200)")] string name,rn [Parameter(Name = "@booknum", DbType = "int")] int booknum,rn [Parameter(Name = "@bookprice", DbType = "int")] int bookprice,rn [Parameter(Name = "@booktype", DbType = "varchar(20)")]string booktype)rn rn IExecuteResult result = this.ExecuteMethodCallrn (this, MethodInfo.GetCurrentMethod() as MethodInfo, name, booknum, bookprice, booktype);rn return result.ReturnValue as IMultipleResults;rn rnrnrn private void button2_Click(object sender, EventArgs e)rn rn Model.dbSQL db = new Model.dbSQL();rn dataGridView1.DataSource = db.proc_books(this.txtname.Text.ToString(), Convert.ToInt32(this.txtnum.Text),rn Convert.ToInt32(txtprice.Text), this.txttype.Text.ToString()).GetResult ().ToList();rn rnrn rnrn提示报 没有返回IMultipleResults的函数"proc_books"声明结果类型
郭霖公众号的文章连接
这一段时间懒了,攒了好多文章没看,怕以后找不到了,在这mark一下,以后看 Material Design中的CoordinatorLayout和Behavior详解 Android属性动画进阶用法 Android抽奖转盘的实现 模仿荷包启动动画——金钱掉落 Android中不得不谈的setContentView 进击的RecyclerView——LRe
学习SQL,大神来指导下
[code=sql]rncreate database stusrncreate table total_scorern(rn stuid char(6),rn sum_score char(4)rn)rncreate table stuInforn(rn stuid char(6),rn stuName char(8)rn)rncreate table Chinesern(rn stuid char(6),rn score char(4)rn)rncreate table Mathrn(rn stuid char(6),rn score char(4)rn)rncreate table Englishrn(rn stuid char(6),rn score char(4)rn)rnrninsert into total_score values('100001','225')rninsert into total_score values('100002','210')rninsert into total_score values('100003','195')rnrninsert into total_score values('100001','张三')rninsert into total_score values('100002','李四')rninsert into total_score values('100003','王五')rnrninsert into Chinese values('100001','80')rninsert into Chinese values('100002','90')rninsert into Chinese values('100003','95')rnrninsert into Math values('100001','80')rninsert into Math values('100002','85')rninsert into Math values('100003','92')rnrninsert into English values('100001','70')rninsert into English values('100002','78')rninsert into English values('100003','98')rnrn--用一条语句求出语文成绩+英语成绩+数学成绩和总分不符的记录rn--结果包含stuInfo.stuid,stuInfo.stuName,total_score.sum_score,Chinese.score,Math.score,English.scorern[/code]
请各位大神来看看拓扑排序的问题
算法描述:rn从task.in 文件中读入任务调度序列,输出n个任务适合的一种调度方式到task.out中。每行第一个表示前序任务,括号中的任务为若干个后序任务,表示只有在前序任务完成的情况下,后序任务才能开始。若后序为NULL则表示无后继任务。rn Sample Input: Sample Output:rn Task0(Task1,Task2) Task0 Task1 Task3 Task2rn Task1(Task3)rn Task2(NULL)rn Task3(NULL) rnrn我想用邻接矩阵算,不过如何将上述每行的数字提取到数组当中呢?还请各位帮帮忙。。
各位大神来点评下架构问题
先描述下新公司的java EE架构:rn表现层-jsprn控制层-springMVC 部署在tomcatrn业务层/数据持久层-EJB3.0 部署在jbossrnrn做的是一个互联网的电子商务网站,不知道这套架构是否合理?rn后期会不会遇到什么瓶颈
MINA的问题~大神来
最近做了个项目,客户端使用dtu通过tcp协议上报数据,服务器端我使用了mina,现在发现个问题当mina报错:exceptionCaught...:java.io.IOException: 您的主机中的软件中止了一个已建立的连接。 设备就再也连接不上来了~ 我分析了下 可能是因为服务器端单方断开连接 客户端dtu貌似不会自动重连? 有大神解答下吗
OutOfMemoryErro问题,大神来~
[img=http://img.my.csdn.net/uploads/201212/22/1356180858_7618.png][/img][img=http://img.my.csdn.net/uploads/201212/22/1356180820_7819.png][/img]rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]如图,有大神能解释下么~
LitePal 开源数据库框架学习(跟随郭霖老师的学习)
在android studio中添加dependdencies{ compile‘org.litepal.android:core:1.3.2’ } 在app/src/main中添加assets文件夹,添加文件litepal.xml   &amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt; &amp;lt;litepal&amp;gt; &amp;lt;dbname ...
郭霖所写的关于ActionBar解析和实战博客中的源码
郭霖所写的关于ActionBar解析和实战博客中的源码
麻烦各位大神了
我想问一下,在用C++写链表的时候,对new和delete的重载的意义是什么,想了好久实在不明白。
聊天界面的实现(参考郭神第一行代码)
效果图如下: 控件图片素材直接用了网上的,仅供学习哈 我们看到,这个布局里有聊天的头像,分布在左右的聊天消息框,各个聊天消息的时间。这里便来实现这个界面 需要自行在build.gradle里添加recyclerView的依赖和圆形图片控件的依赖 圆形图片控件依赖 //CircleImageView implementation 'de.hdodenhof:circleimageview:...
关于跨域请求天气预报数据问题,各位大神来看下
[code=javascript]rn rn $.ajax(rn type: "post",rn async: false,rn url: "http://m.weather.com.cn/data/101010100.html",rn dataType: "jsonp",rn rn jsonp: "callback", rn jsonpCallback: "flightHandler", rn success: function (json) rn alert(json);rn rn ,rn error: function () rn alert('fail');rn rn );rn rn[/code]rn上面是以北京(101010100)为例子来测试rn然而为何一直都是出错呢,我要修改哪里的数据呢
各位大神来帮看看这个关于iOS开发者账号的问题
事情是这样的 我公司有一个开发者团队账号 我在Member Center ----> people 添加我的apple ID 为开发者 但是在发布app等流程上 收不到 苹果发过来的邮件 之前离职同事的apple开发权限我已经删除了 但是邮件反而还会发给他们 请问各位大神 我要怎么做才能让我收到 发布app等流程 的邮件 让离职的同事 不再收到邮件
关于dll里面使用的问题,各位大神来帮帮忙啊
我编写了个dll,里面用new创建了一个对象,我用程序调试调用的时候,一到new这就会被中断,求解这是为什么,rn[img=https://img-bbs.csdn.net/upload/201404/12/1397292663_902222.png][/img]
第一行代码第二版(郭霖著)笔记之第十二章(Material Design 实战)
本篇笔记介绍了Toolbar、DrawerLayout、Toolbar导航按钮、NavigationView、FloatingActionButton、Snackbar、CoordinatorLayout、CardView、AppBarLayout、SwipeRefreshLayout、CollapsingToolbarLayout、如何充分利用系统状态栏空间这几方面的内容,希望开卷有益!
有关于郭大神《第一行代码》酷欧天气遇到的问题
在ChooseAreaFragment中,代码全部敲完以后,运行app时遇到了,闪退现象,查看logcat,遇到如下错误n
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制