Android 如何使用getSupportActionBar()从另一个类进行更改
更新:使用工作代码编辑 我有一个类(Android 如何使用getSupportActionBar()从另一个类进行更改,android,android-actionbar,android-holo-everywhere,Android,Android Actionbar,Android Holo Everywhere,更新:使用工作代码编辑 我有一个类(ColorChanger),在该类中,我试图从其他活动中更改操作栏的颜色,但getSupportActionBar()未在我的ColorChanger类中定义。我怎样才能正确地做到这一点 来自颜色变换器的工作代码: public void changeColor(int newColor, Context context, Activity activity) { this.mActivity = activity; Drawable col
ColorChanger
),在该类中,我试图从其他活动中更改操作栏的颜色,但getSupportActionBar()
未在我的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;
}
如果您需要更多代码,请询问。getSupportActionBar()是SherlockActivity类中的一个方法,如您所见
如果您的类没有扩展SherlockActivity,则不能使用该方法
要使用它,您有两个选项:
1.您可以在扩展SherlockActivity的类中创建ColorChange类作为私有类
2.在构造函数中将SherlockActivity的引用传递给ColorChange类,例如:
public ColorChange(SherlockActivity cActivity){
this.callingActivity = cActivity;
}
然后从你的方法:
this.callingActivity.getSupportActionBar()
希望有帮助 -您的班级没有扩展sherlock活动。在你的类中没有这样的方法。你在使用ActionBarSherlock吗?@BrianRoach
颜色变换器
类没有扩展任何内容,但我想知道如何使用这个类中的getSupportActionBar()
对扩展sherlock活动的另一个类进行更改(或者仅仅是活动,因为我正在使用holoeverywhere)@Ahmad是的,但在另一个类上,我希望将更改通过活动实例传递到您的Colorchanger,并从中获取支持操作栏。将活动添加到Colorchanger构造函数?这在代码中起作用,但每当我尝试在我的设备上运行此操作时,我在第25行出现错误,它是Drawable-bottomDrawable=mActivity.getResources().getDrawable(R.Drawable.actionbar\u-bottom)事实上,我让它工作了,谢谢你D我将用工作代码更新OP:D