我如何使用getSupportActionBar()来从另一个类进行更改

时间:2013-07-12 21:26:52

标签: android android-actionbar android-holo-everywhere

更新:使用工作代码进行编辑!

我有一个类(ColorChanger),我试图从其他活动中更改动作栏的颜色,但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;

}

如果您需要更多代码,请询问。

1 个答案:

答案 0 :(得分:1)

getSupportActionBar()是SherlockActivity类的一个方法,您可以看到here

如果您的课程没有扩展SherlockActivity,则无法使用该方法。

要使用它,您有两种选择:

1.您可以将ColorChange类创建为扩展SherlockActivity的类中的私有类。

2.在构造函数中将SherlockActivity的引用传递给ColorChange类,例如:

public ColorChange(SherlockActivity cActivity){

this.callingActivity = cActivity;

}

然后从你的方法:

this.callingActivity.getSupportActionBar()

希望有所帮助!