Jak uzyskać zdarzenie onClickListener () na niestandardowym pasku akcji

Opracowuję aplikację, w której muszę się zdobyćonClick() zdarzenie na kliknięcie niestandardowego widoku paska akcji. Do tej pory jestem w stanie osiągnąć następujący układ.

Oto mój kod do osiągnięcia tego:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    getActionBar().setCustomView(R.layout.custom_image_button);
    getActionBar().setDisplayOptions(
            ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case android.R.id.home:
        Toast.makeText(getApplicationContext(), "Clicked on ActionBar",
                Toast.LENGTH_SHORT).show();

    default:
        return super.onOptionsItemSelected(item);
    }
}

Oto mój układ custom_image_button:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >

<FrameLayout
    android:id="@+id/frame_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true" >

    <TextView
        android:id="@+id/points"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_marginRight="10dp"
        android:layout_marginTop="5dp"
        android:background="@drawable/points_yellow"
        android:gravity="center"
        android:paddingLeft="20dp"
        android:textColor="#887141"
        android:textIsSelectable="false"
        android:textSize="22sp"
        android:textStyle="bold" >
    </TextView>

    <ImageView
        android:id="@+id/badge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|right"
        android:layout_marginRight="5dp"
        android:layout_marginTop="0dp"
        android:src="@drawable/badge_notification" >
    </ImageView>
</FrameLayout>

</RelativeLayout>

Próbowałem mieć odbiornik kliknięć na niestandardowym układzie. W tym celu wypróbowałem następujący kod:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    getActionBar().setCustomView(R.layout.custom_image_button);
    getActionBar().setDisplayOptions(
            ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_CUSTOM);

    final LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View v = inflater.inflate(R.layout.custom_image_button, null);

    frameLayout = (FrameLayout) v.findViewById(R.id.frame_layout);

    frameLayout.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Toast.makeText(getApplicationContext(), "Clicked on 1",
                    Toast.LENGTH_SHORT).show();
            return false;
        }
    });
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case android.R.id.home:
        Toast.makeText(getApplicationContext(), "Clicked on ActionBar",
                Toast.LENGTH_SHORT).show();

    default:
        return super.onOptionsItemSelected(item);
    }
}

}

Ale nie mogę tego zdobyćonClick() zdarzenie na niestandardowym obrazie. Co robię źle tutaj, proszę.

Każda pomoc zostanie doceniona.

questionAnswers(2)

yourAnswerToTheQuestion