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

来源:互联网 发布:python求最大公约数包 编辑:程序博客网 时间:2024/05/19 10:41

原文地址 :  http://blog.csdn.net/consoar/article/details/16106187

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

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

Application中有两个static方法

[java] view plain copy
  1. public static void setActivity(Activity activity) {  
  2.     MyApplication.activity = activity;  
  3. }  
[java] view plain copy
  1. public static LayoutInflater getLayoutInflater() {  
  2.     if (layoutInflater == null) {  
  3.         layoutInflater = getActivity().getLayoutInflater();  
  4.     }  
  5.     return layoutInflater;  
  6. }  

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

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

[java] view plain copy
  1. public static int getColor(int attr) {  
  2.     int[] attrs = new int[]{attr};  
  3.     Context context = MyApplication.getActivity();  
  4.     TypedArray ta = context.obtainStyledAttributes(attrs);  
  5.     return ta.getColor(0430);  
  6.   
  7. }  

0 0
原创粉丝点击