1.出现fragment后台栈的bug。

bug描述:当点击加入后台栈的操作按钮改变指定控件的内容之后,称为A操作;接下来又点击其它没有操作后台栈的按钮来修改原来指定的控件内容,称为B操作。然后点击back键,就会出现A操作之前的界面与B操作叠加的bug。

因为我们程序中改变的指定控件是FrameLayout,

<FrameLayout
  android:id="@+id/frame_content"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_above="@+id/frameMenu"
  android:layout_below="@+id/main_title" >
   
  </FrameLayout>

因为点击back键是回到了A操作之前的界面,而点击back键并不影响B操作显示的界面,FrameLayout会叠加,所以就会出现叠加的情况。

解决方法,当进行B操作的时候改变指定控件的内容时,清空后台栈。

清空方法:popBackStackImmediate()

参考:http://www.cnblogs.com/qixing/p/4015262.html

这个方法:if (getSupportFragmentManager().getFragments() != null
&& getSupportFragmentManager().getFragments().size() > 0) {
getSupportFragmentManager().getFragments().clear();

会出现数组越界的bug。

我所用的方法,经测试没有问题:

// 清除后台栈by Hanshenquan
private void clearBackStack() {
if (getSupportFragmentManager().getFragments() != null
&& getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStackImmediate(null,
FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
}

getBackStackEntryCount()是获得后台栈中的数量。

测试,显示back栈中对象的数量:

int num = getSupportFragmentManager().getBackStackEntryCount();
Toast.makeText(this, "Fragment数量 "+String.valueOf(num), Toast.LENGTH_LONG).show();

2.手机线连接不好,会出一些问题,所以在没有其它错误,且重启编程软件无效之后,应该考虑重新插拔连接手机的数据线,确保连接操作没有问题。

3.获取类的对象3种方式。Class.forName(),类名.class和对象.getClass。

2016年3月8日Android实习日记的更多相关文章

  1. 2016年3月15日Android实习日记

    1.解决了ScrollView滑动冲突问题. 2.设置好了“查看详解”与“题目编号”的部分. 3.完成了app启动图片的设置,并在启动的过程中开辟新的线程连接服务器并开启监听数据. 别忘了注册启动Ac ...

  2. 2016年3月11日Android实习日记

    1.明天删除orthodotics_design_animation_content_gif.gif文件.(已完成) 2. 如何检测内存泄露? A: 可以通过一些性能监测分析工具,如 JProfile ...

  3. 2016年3月10日Android实习日记

    待解决问题: *1:内部ScrollView与外部手势事件滑动冲突问题. *2:Linearlayout+View+LinearLayout横向排列,这其中两个LinearLayout内部各有3个竖向 ...

  4. 2016年3月9日Android实习日记

    1. 解决 org.eclipse.swt.SWTException: Graphic is disposed 问题. 参考:http://www.xuebuyuan.com/1896964.html ...

  5. 2016年3月4日Android实习笔记

    1.让水平LinearLayout中的两个子元素分别居左和居右 在LinearLayout中有两个子元素,LinearLayout的orientation是horizontal.需要让第一个元素居左, ...

  6. 2016年3月3日android实习笔记

    1: android自定义控件时,通常需要重写父类构造函数.这三个够找函数具体啥时调用? public View (Context context) 是在java代码创建视图的时候被调用,如果是从xm ...

  7. 2016年3月1日Android实习笔记

    1:经查资料,Android中gif动画加载共有两种 1)利用WebView,WebView 主要调用三个方法:LoadUrl.LoadData.LoadDataWithBaseURL 2)主要用的是 ...

  8. 2016年3月11日Android学习日记

    1.调试技巧:当一次调试过后,可以在App重新返回当前的状态,然后再调试,而不用再点击Android studio的Debug按钮. 参考:http://www.2cto.com/kf/201506/ ...

  9. 2016年3月16日Android学习笔记

    1.Jdk1.7以上switch语句中才能用字符串,在Android Studio中我改正了jdk的版本为1.8,但是还是出同样的错误,原来我用的sdk版本是4.4的,改成5的就没有问题了. 2.引入 ...

随机推荐

  1. python模块介绍- binascii:二进制和ASCII互转以及其他进制转换

    20.1 binascii:二进制和ASCII互转作用:二进制和ASCII互相转换. Python版本:1.5及以后版本 binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法.通 ...

  2. Sql 插入自定义主键

    在遇到数据库设计是自增的主键,且需要插入自定义的主键Id时,这个时候如果直接Insert的话,将会发生错误,错误提示信息: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'XXX' ...

  3. python内存数据库pydblite

    Pure-Python engine 最近由于项目开发中发现python informixDB模块对多线程的支持非常不好,当开启两个线程同时连接informix数据库的时候,数据库会报错,显示SQL ...

  4. 001_TCP/IP TIME_WAIT状态原理及监控实战

    一.原理 <1>TIME_WAIT状态原理---------------------------- 通信双方建立TCP连接后,主动关闭连接的一方就会进入TIME_WAIT状态. 客户端主动 ...

  5. centos系统初始化流程及实现系统裁剪

    Linux系统的初始化流程: POST:ROM+RAM BIOS: Boot Sequence MBR: 446:bootloader 64: 分区表 2: 5A kernel文件:基本磁盘分区 /s ...

  6. 注解图Annotation

    该图来源于 竹子-博客(.NET/Java/Linux/架构/管理/敏捷) http://www.cnblogs.com/peida/archive/2013/04/26/3038503.html,感 ...

  7. S5PV210的根文件系统制作

    一.移植BusyBox1.下载BusyBox的源代码下载地址:http://www.busybox.net/downloads/,此处下载busybox-1.20.2.tar.bz2.2.解压并进入目 ...

  8. 【ES】学习5-全文搜索

    全文搜索两个最重要的方面是:相关性, 分析. 一旦谈论相关性或分析这两个方面的问题时,我们所处的语境是关于查询的而不是过滤. match:单个词查询 GET /my_index/my_type/_se ...

  9. 【python】多线程queue导致的死锁问题

    写了个多线程的python脚本,结果居然死锁了.调试了一整天才找到原因,是我使用queue的错误导致的. 为了说明问题,下面是一个简化版的代码.注意,这个代码是错的,后面会说原因和解决办法. impo ...

  10. java 扫描输入

    到目前为止,从文件或标准输入读取数据还是一件相当痛苦第事情,一般第解决之道就是读入一行文本,对其进行分词,然后使用Integer Double 等类第各种解析方法来解析数据: //: strings/ ...