2013-07-12 5 views
0

ОБНОВЛЕНИЕ: Отредактировано рабочим кодом!Как использовать getSupportActionBar() для внесения изменений из другого класса

У меня есть класс (ColorChanger), где я пытаюсь изменить цвет actionbars от других видов деятельности, за исключением getSupportActionBar() неопределен из моего ColorChanger класса. Как я могу сделать это правильно?

Рабочий код из ColorChanger:

public void changeColor(int newColor, Context context, Activity activity) { 

    this.mActivity = activity; 
    Drawable colorDrawable = new ColorDrawable(newColor); 
    Drawable bottomDrawable = context.getResources().getDrawable(
      R.drawable.actionbar_bottom); 
    LayerDrawable ld = new LayerDrawable(new Drawable[] { colorDrawable, 
      bottomDrawable }); 

    if (oldBackground == null) { 

     this.mActivity.getSupportActionBar().setBackgroundDrawable(ld); 

    } else { 

     TransitionDrawable td = new TransitionDrawable(new Drawable[] { 
       oldBackground, ld }); 

     this.mActivity.getSupportActionBar().setBackgroundDrawable(td); 

     td.startTransition(200); 

    } 

    oldBackground = ld; 

    this.mActivity.getSupportActionBar().setDisplayShowTitleEnabled(false); 
    this.mActivity.getSupportActionBar().setDisplayShowTitleEnabled(true); 

    currentColor = newColor; 

} 

Если вам нужно больше кода, просто спросите.

+0

http://actionbarsherlock.com/usage.html - ваш класс не расширяет активность sherlock. В вашем классе такого метода нет. –

+0

Вы используете ActionBarSherlock? – Ahmad

+0

@BrianRoach класс 'ColorChanger' не расширяет ничего, но я хотел знать, как использовать' getSupportActionBar() 'из этого класса, чтобы внести изменения в другой класс, который расширяет активность sherlock (или просто активность с тех пор, m, используя holoeverywhere) @ Амад да, но в другом классе, где я хочу, чтобы произошли изменения – TheWizKid95

ответ

1

getSupportActionBar() представляет собой метод из класса SherlockActivity, как вы можете видеть here

Если ваш класс не распространяющие SherlockActivity, вы не можете использовать этот метод.

Чтобы использовать его у вас есть два варианта:

1.You может создать свой класс ColorChange в качестве частного класса внутри класса, который расширяет SherlockActivity.

2.Pass ссылка на SherlockActivity к классу ColorChange, в конструкторе, например:

public ColorChange(SherlockActivity cActivity){ 

this.callingActivity = cActivity; 

} 

А потом из метода:

this.callingActivity.getSupportActionBar() 

Надежда, что помогает!

+0

Это работает в коде, но всякий раз, когда я пытаюсь запустить его на своем устройстве, я получаю сообщение об ошибке в строке 25, которая является «Drawable bottomDrawable = mActivity.getResources(). GetDrawable (R.drawable.actionbar_bottom);' – TheWizKid95

+0

Фактически, Я получил работу, спасибо! : D Я обновлю OP рабочий код: D – TheWizKid95