inflate自定义attr报错的解决方法

近段时间,写了一下多主题支持的软件,用的是Theme+自定义Attr实现的,但是我用的是Fragment,需要inflate,但我发现我直接获取LayoutInflater进行inflate会报错,所以查阅了一下资料,得出要用setTheme过的Activity进行获取,所以我用如下方法实现了

有一个全局的Application叫MyApplication,然后有一个setTheme过的Activity

Application中有两个static方法

	public static void setActivity(Activity activity) {
		MyApplication.activity = activity;
	}
	public static LayoutInflater getLayoutInflater() {
		if (layoutInflater == null) {
			layoutInflater = getActivity().getLayoutInflater();
		}
		return layoutInflater;
	}

在Activity中进行setTheme之后调用MyApplication.setActivity(this);进行初始化,以后只要使用MyApplication.getLayoutInflater()得到的LayoutInflater进行inflate就行了。

哦顺便加上获取对应主题颜色值的代码

    public static int getColor(int attr) {
        int[] attrs = new int[]{attr};
        Context context = MyApplication.getActivity();
        TypedArray ta = context.obtainStyledAttributes(attrs);
        return ta.getColor(0, 430);

    }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值