主Activity:public class MainActivity extends Activity {PicActivity Draw;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Draw = new FaceActivity(this);setContentView(Draw); //新建surfaceview}......//省略菜单创建public boolean onOptionsItemSelected(MenuItem item) {switch(item.getItemId()) {case MENU_EYES:FaceActivity.LoadPic();break;}return super.onOptionItemSelected(item)}}==================================PicActivitypublic class FaceActivity extends SurfaceView implements SurfaceHolder.Callback {public FaceActivity(Context context) {super(context);this.getHolder().addCallback(this);paintPic = new Paint();paintPic.setAntiAlias(true);this.LoadPic();}protected static void LoadPic() {paintPic = new Paint();imagecl = BitmapFactory.decodeResource(getResources(), R.drawable.cl);imagecr = BitmapFactory.decodeResource(getResources(), R.drawable.cr);}......}我想通过第一个Activity里面的菜单,调用第二个java里面的LoadPic函数,利用switch方法(还没写代码)加载不同的图片.但是eclipse提示我,LoadPic要是static才能被第一个Activity调用,而改成静态之后,getResources()方法就不能使用,也就读不出图片了.求解,应该怎么办!~
2 回答
HUH函数
TA贡献1836条经验 获得超4个赞
获取resource需要context对象,所以你这个问题有如下几个解决思路
1,使用Context作为参数,例如public static getResourcesStatic(Context context, int resId)
2,使用Context作为成员变量,在构造函数中接受一个Context参数,并赋值给自己成员变量
这样在此对象生命期内,都可以使用.
不过并不推荐这种做法,因为传入的Context多数情况下是Activity,往往会附着很多资源,如背景图片等,无法GC,导致过高的内存占用.可以用下面的改进方式:
3,使用WeakReference<Context>保存context的弱引用
使用时要注意判断ref.get()是否为null
添加回答
举报
0/150
提交
取消