更新:使用工作代码进行编辑!
我有一个类(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;
}
如果您需要更多代码,请询问。
答案 0 :(得分:1)
getSupportActionBar()是SherlockActivity类的一个方法,您可以看到here
如果您的课程没有扩展SherlockActivity,则无法使用该方法。
要使用它,您有两种选择:
1.您可以将ColorChange类创建为扩展SherlockActivity的类中的私有类。
2.在构造函数中将SherlockActivity的引用传递给ColorChange类,例如:
public ColorChange(SherlockActivity cActivity){
this.callingActivity = cActivity;
}
然后从你的方法:
this.callingActivity.getSupportActionBar()
希望有所帮助!