返回故事
我正在以编程方式设置背景,所以我在onCreate
中执行以下操作,它运行正常。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dogs);
Drawable bkg = getResources().getDrawable(R.drawable.bg2);
bkg.setAlpha(50);
findViewById(R.id.bkg).setBackgroundDrawable(bkg);
...
}
问题
需要为多个活动重复相同的过程,我决定将代码提取到一个帮助类调用MyVars和MyVars里面我有
private static Drawable bkg = null;
public static void setPageBackground(Context context, View view) {
if (null == bkg) {
Drawable bkg = context.getResources().getDrawable(R.drawable.bg2);
bkg.setAlpha(50);
}
view.setBackgroundDrawable(bkg);
}
然后在onCreate
里面我现在有
MyVars.setPageBackground(this, findViewById(R.id.bkg));
但是bkg
始终为null,这意味着context.getResources().getDrawable(R.drawable.bg2);
始终返回null。有谁理解为什么?顺便说一句,我运行调试器,实际上资源总是返回null。
答案 0 :(得分:0)
bkg始终为null,因为您将drawable分配给方法字段bkg而不是类字段bkg:
将您的方法更改为此
public static void setPageBackground(Context context, View view) {
if (null == bkg) {
//Drawable bkg = getResources().getDrawable(R.drawable.bg2);
//use class field bkg
bkg = context.getResources().getDrawable(R.drawable.bg2);
bkg.setAlpha(50);
}
view.setBackgroundDrawable(bkg);
}