android - 我无法更改我的ImageButton的ImageResource

时间:2013-12-07 10:47:49

标签: android imagebutton android-image

正如标题所说,即使我调用了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的类,但我的高度等于它的宽度。

我不知道我在这里做错了什么,有人可以帮忙吗?

2 个答案:

答案 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);
    } 
}