如何或在何处处理由android操作栏生成的点击事件

时间:2011-02-28 16:12:47

标签: android oop menu event-handling menubar

我有一个操作栏,我已通过...

插入到我的几个布局屏幕中
<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>

将相同的点击处理程序放入每个活动中都会起作用,但也会产生不良影响。

1 个答案:

答案 0 :(得分:2)

只需创建一个扩展Activity的基类,并在其中包含所有全局操作栏点击处理程序。例如:

public abstract class BaseActionBarActivity extends Activity {

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

}

然后,不要在自己的应用活动中扩展Activity,而是从基类扩展:

public class MyActivity extends BaseActionBarActivity {