JLateralus
JLateralus

Reputation: 15

Basic ImageButton onClick event not firing - surely something simple?

I'm trying to get a simple onClick to fire from an ImageButton - it seems like a simple enough task, but I'm obviously missing something here.

Here is my java file:

package com.jlbeard.android.testapp;  
import android.app.Activity;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.ImageButton;  
import android.widget.Toast;  

public class testapp extends Activity {  
/** Called when the activity is first created. */  
@Override  
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.main);  

    //handle the button press
    ImageButton mainButton = (ImageButton) findViewById(R.id.mainButton);
    mainButton.setOnClickListener(new OnClickListener() {

     @Override
        public void onClick(View v) {
      //show message
      Toast.makeText(testapp.this, "Button Pressed", Toast.LENGTH_LONG);

     }
    });
}
}

Here is my layout file:

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

  <ImageView
  android:id="@+id/whereToEat"
  android:src="@drawable/where_to_eat"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerHorizontal="true"
  android:layout_marginTop="8px"
  />

 <ImageButton
  android:id="@+id/mainButton"
  android:src="@drawable/main_button"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_centerHorizontal="true"
  android:layout_centerVertical="true"
  android:background="@null"
  android:clickable="true"
  android:onClick="mainButtonClick"
  />

</RelativeLayout>

It seems to me that I'm missing something simple... but can't seem to figure it out. Thanks!

Upvotes: 0

Views: 6069

Answers (3)

Xav21
Xav21

Reputation: 1

In my case, the imageButton was displayed behind a list. Because the list was empty, the ImageButton was seen but onClick was never fired.

Adding android:elevation="5dp" in the screen xml solve my problem

Note that if I use Button instead of ImageButton, elevation is not required.

Upvotes: 0

Android Dev Dude
Android Dev Dude

Reputation: 142

You also might have a problem due to the manifest setting onClick android:onClick="mainButtonClick"

If mainButtonClick exists on post 1.5 devices it may be called instead, overriding the one you're setting in code

Upvotes: 0

broot
broot

Reputation: 28312

You didn't run show() method on Toast object. Very common mistake :-)

Upvotes: 2

Related Questions