Как или где обрабатывать события щелчка, генерируемые панелью действий Android - PullRequest
2 голосов
/ 28 февраля 2011

У меня есть панель действий, которую я вставил в свои несколько экранов макетов с помощью ...

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

Сама панель действий довольно проста и, может быть, даже очень плоха, но не ...

<?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 Ответ

2 голосов
/ 28 февраля 2011

Просто создайте базовый класс, расширяющий Activity, и включите в него все свои глобальные обработчики нажатий на панели действий.Пример:

public abstract class BaseActionBarActivity extends Activity {

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

}

Затем вместо расширения Activity в действиях вашего собственного приложения расширьте базовый класс:

public class MyActivity extends BaseActionBarActivity {
...