onNewIntent(intent)
在使用Intent的activity1设计模式为默认(standard)时:
(1)启动模式设为 standard 和 singleTop 时,使用Intent启动activity2重走的方法顺序为:
(2)启动模式设为 singleInstance 和 singleTask 时,使用Intent启动activity2重走的方法顺序为:
在使用Intent的activity1设计模式为默认(singleInstance)时:
(3)启动模式设为 singleTop 时,使用Intent启动activity2重走的方法顺序为:
可以看出,(1)的情况下,activity2是重新创建实例,而(2)(3)的情况下,则是从当前栈中获取已存在的实例
当再次打开已存在的实例的时候,会走实例的 onNewIntent() 方法
getParentFragment()
遇到的情况是:子fragment需要动态修改多次爷爷fragment布局里的一个ImageView的VISIBLE/GONE效果;考虑到,广播,eventbus,接口回调,都觉得太罗嗦了…
解决办法:爷爷fra中定义一个public方法,控制此ImageView的VISIBLE/GONE效果
pulic void onImageStateChange(){ ... }
子fra通过两次getParentFragment()获取爷爷fra的实例(记得判空,判类型),后通过实例调用onImageStateChange()
(Fragment1)((Fragment2)(Fragment3.getParentFragment()).getParentFragment()).onImageStateChange()
使用getParentFragment()需要注意,此方法是API17的时候提出的,4.2以下的版本需要兼容工具包
使用getParentFragment()返回值如果为空,或者类型错误,要记得检查一下,自己调用子Fra用的是 getFragmentManager(),还是getChildFragmentManager()
GradientDrawable
遇到的问题是:在shape.xml中设置了边框角度和solid颜色,同时想要复用shape.xml但在代码中动态更改solid颜色
解决办法,获取控件的背景 getBackground();
同时强转成GradientDrawable类型
GradientDrawable bgDrawable = (GradientDrawable) tv.getBackground();
然后,就可以设置所有在shape.xml中可以设置的了
bgDrawable.setColors(new int[]{Color.BLACK,Color.WHITE});
bgDrawable.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT);
bgDrawable.setCornerRadius(90);
bgDrawable.setStroke(10,Color.RED,3,3);
以前只知道在xml中可以使用 gradinent设置渐变…
DecimalFormat
这是个工具类,用于格式化十进制数字,非常好用
具体可以参考 Java DecimalFormat的主要功能及使用方法
其实简单来说,就是将你需要的格式写下来,比如保留小数点后两位:
DecimalFormat format = new DecimalFormat("#.00");
String s = format.format(32);
其中 #代表可空,没有则为null;0代表占位,没有则置0
extra
TextUtil.isEmpty( Msg )
Msg.equalsIgnoreCase(” another Str “)