正如标题所说,即使我调用了setImageResource,我的ImageButton也不会更新其资源。
这是我的代码:
public static void toggleqsring() {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.activity_main, null, false);
SquareButton qs_ringer = (SquareButton) v.findViewById(R.id.qs_ring);
if (mPhoneIsSilent==0) {
qs_ringer.setImageResource(R.drawable.ic_qs_ring_off);
} else if (mPhoneIsSilent==1) {
qs_ringer.setImageResource(R.drawable.ic_qs_ring_on);
} else if (mPhoneIsSilent==2) {
qs_ringer.setImageResource(R.drawable.ic_qs_vibrate_on);
}
}
SquareButton是一个扩展ImageButton的类,但我的高度等于它的宽度。
我不知道我在这里做错了什么,有人可以帮忙吗?
答案 0 :(得分:0)
试试这个:
qs_ringer.setBackgroundResource(R.drawable.ic_qs_ring_off);
答案 1 :(得分:0)
好的,我经过一些实验后得到了它。
我没有传递MainActivity的Context,而是将Activity本身传递给了一个新的变量
public static Activity mActivity;
并使用此代码更改图像资源。由于findViewById是Activity而不是Context的方法,因此只能使用Activity变量:
public static void toggleqsring() {
SquareButton qs_ringer = (SquareButton) mActivity.findViewById(R.id.qs_ring);
if (mPhoneIsSilent==0) {
qs_ringer.setImageResource(R.drawable.ic_qs_ring_off);
} else if (mPhoneIsSilent==1) {
qs_ringer.setImageResource(R.drawable.ic_qs_ring_on);
} else if (mPhoneIsSilent==2) {
qs_ringer.setImageResource(R.drawable.ic_qs_vibrate_on);
}
}