2013-12-07 2 views
1

Так как название говорит, мой ImageButton не будет обновлять свой ресурс, хотя я назвал setImageResource.android - я не могу изменить ImageResource моего 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

Ok я получил это работает после того, как немного поэкспериментировать.

Вместо передачи контекста MainActivity, я прошел сам активность к новому переменному

public static Activity mActivity; 

И использовал этот код, чтобы изменить ресурс изображения. Поскольку findViewById является методом деятельности, но не контекст, вы можете сделать это только с переменной активностью:

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); 
    } 
} 
0

Попробуйте это:

qs_ringer.setBackgroundResource(R.drawable.ic_qs_ring_off); 
+0

Нет, что только устанавливает мое изображение в качестве фона вместо этого, и он не работает. – user3032282

Смежные вопросы