0

更新:作業コードで編集!

クラス ( 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;

}

さらにコードが必要な場合は、お問い合わせください。

4

1 に答える 1

1

ここでわかるように、getSupportActionBar() は SherlockActivity クラスのメソッドです。

クラスが SherlockActivity を拡張していない場合、そのメソッドは使用できません。

それを使用するには、次の 2 つのオプションがあります。

1.SherlockActivity を拡張するクラス内で、ColorChange クラスをプライベート クラスとして作成できます。

2. コンストラクターで、SherlockActivity の参照を ColorChange クラスに渡します。たとえば、次のようにします。

public ColorChange(SherlockActivity cActivity){

this.callingActivity = cActivity;

}

そして、あなたの方法から:

this.callingActivity.getSupportActionBar()

それが役立つことを願っています!

于 2013-07-12T21:58:48.877 に答える