我发现程序启动时,报如下的NullPointerException异常:
E/AndroidRuntime(4246): Caused by: java.lang.NullPointerException
E/AndroidRuntime(4246): at android.content.ContextWrapper.getResources(ContextWrapper.java:81)
我的源码如下:
- private OnPageChangeListener mPageChangeListener = new OnPageChangeListener()
- {
- private int bmpW = 0; // 游标图片的宽度
- {
- bmpW = BitmapFactory.decodeResource(MainActivity.this.getResources(),
- R.drawable.tab_line_press).getWidth();
- //....
- }
- //...
- }
查看Android源码(ContextWrapper.java:81),发现是Context的变量mBase为Null了:
- Context mBase;
- //...
- @Override
- public Resources getResources()
- {
- return mBase.getResources();
- }
于是,发现这个做有问题,在变量的声明时,Context还没有传递进来呢!
必须等到OnCreate后,才能使用Context去获取资源(getResources)!