主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
提交
取消