今天在开发过程中,因为要对listview中显示的图片进行处理,类似现在的糗事百科那种图片显示效果,具体解决方案等以后再说,在下面的代码处抛出了这个异常:
DisplayMetrics dm = new DisplayMetrics();
dm = MyApplication.getInstance().getResources().getDisplayMetrics();
经过断点调试发现,在
MyApplication.getInstance()是可以获取到application的,但是在下面的getResource()这行代码中出现了空的错误,查看源码发现在变量的声明时,context还没有被传递进来,必须等到onCreate之后,才能使用context去获取资源,下面是开始报错时的写法:
public class MyApplication extends Application {
private static MyApplication instance;
public static DisplayImageOptions options; // DisplayImageOptions是用于设置图片显示的类
public static DisplayImageOptions options_head; // DisplayImageOptions是用于设置图片显示的类
private List<Activity> mList = new LinkedList<Activity>();
private HashMap<String, Activity> map = new HashMap<String, Activity>();
public static MyApplication getInstance() {
if (instance == null) {
instance = new MyApplication();
}
return instance;
}
@Override
public void onCreate() {
super.onCreate();
initImageLoader(this);
}
下面是改进之后的写法:
public class MyApplication extends Application {
private static MyApplication instance = null;
public static DisplayImageOptions options; // DisplayImageOptions是用于设置图片显示的类
public static DisplayImageOptions options_head; // DisplayImageOptions是用于设置图片显示的类
private List<Activity> mList = new LinkedList<Activity>();
private HashMap<String, Activity> map = new HashMap<String, Activity>();
public static MyApplication getInstance(){
return instance;
}
@Override
public void onCreate() {
super.onCreate();
instance = this;
initImageLoader(this);
}
更改之后,解决了这个空指针异常。