为了账号安全,请及时绑定邮箱和手机立即绑定

请问下Android开发中,如何在静态类中使用getResources()获取图片资源.?

请问下Android开发中,如何在静态类中使用getResources()获取图片资源.?

墨色风雨 2022-04-16 11:11:52
主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

查看完整回答
反对 回复 2022-04-19
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

和静态、动态无关,写法如
类名..class.getResource(name)
在android,方法的参数传入当前的实例

查看完整回答
反对 回复 2022-04-19
  • 2 回答
  • 0 关注
  • 309 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信