zoukankan      html  css  js  c++  java
  • 2016年3月8日Android实习日记

    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。

  • 相关阅读:
    java并发编程 线程间协作
    博客园添加目录,导航,回到顶部
    汉诺塔递归实现
    java并发编程 线程基础
    Flink中算子进行Chain的规则分析(最新代码,源码版本大于1.11.2)
    Flink流处理程序在Local模式下的运行流程源码分析
    Flink-DataStream流处理应用(Local模式下)运行流程-源码分析
    Flink Streaming基于滚动窗口的事件时间分析
    Spark-2.3.2 Java SparkSQL的自定义HBase数据源
    Spark-2.3.2 HBase BulkLoad
  • 原文地址:https://www.cnblogs.com/hsqdboke/p/5252970.html
Copyright © 2011-2022 走看看