2

非常に少数のレイアウト画面に挿入したアクションバーがあります...

<include android:id="@+id/main_actionbar" layout="@layout/actionbar" />

アクションバー自体はかなりシンプルで、おそらく非常に悪いかもしれませんが、wtf...

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/actionbar" style="@style/ActionBarWrapper">
    <RelativeLayout style="@style/ActionBarContent"
        android:id="@+id/actionBarContent">
        <TextView android:id="@+id/ab_text" style="@style/ActionBarText" />
        <ImageView android:id="@+id/ab_border_01" style="@style/ActionBarBorder01" />
        <ImageView android:id="@+id/ab_icon_01" style="@style/ActionBarIcon01" />
        <ImageView android:id="@+id/ab_border_02" style="@style/ActionBarBorder02" />
        <ImageView android:id="@+id/ab_icon_02" style="@style/ActionBarIcon02" />
        <ImageView android:id="@+id/ab_border_03" style="@style/ActionBarBorder03" />
        <ImageView android:id="@+id/ab_icon_03" style="@style/ActionBarIcon03" />
    </RelativeLayout>
    <ImageView android:id="@+id/ab_footerline" style="@style/ActionBarFooterLine" />
</LinearLayout>

アクションバーの背後にある機能を実装しようとしていますが、アプリケーションのさまざまな画面で発生する可能性のあるクリックを処理する方法や場所がわかりません。

<item name="android:onClick">ab_click</item>

すべてのアクティビティに同じクリックハンドラを配置することは機能しますが、実際には悪臭を放ちます。

4

1 に答える 1

2

拡張する基本クラスを作成し、そのActivity中にすべてのグローバル アクション バー クリック ハンドラーを含めるだけです。例:

public abstract class BaseActionBarActivity extends Activity {

    public void ab_click(View v) {
        // handle your click
    }

}

次に、独自のアプリ アクティビティを拡張するのではなくActivity、基本クラスから拡張します。

public class MyActivity extends BaseActionBarActivity {
于 2011-02-28T17:13:08.950 に答える