onNewIntent(intent);getParentFragment();GradientDrawable;DecimalFormat

onNewIntent(intent)

在使用Intent的activity1设计模式为默认(standard)时:
(1)启动模式设为 standardsingleTop 时,使用Intent启动activity2重走的方法顺序为:
这里写图片描述
(2)启动模式设为 singleInstancesingleTask 时,使用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 “)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值