Imagen de clic en HagaBLE - Android
-
24-10-2019 - |
Pregunta
¿Cómo hago una imagen que se pueda hacer clic? He intentado algunas maneras, pero sin éxito. Aquí está el último código que probé (se puede hacer clic pero recibe un error):
ImageView btnNew = (ImageView) findViewById(R.id.newbutton);
btnNew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do stuff
}
});
Y aquí está la parte de XML:
<ImageView
android:src="@drawable/tbnewbutton"
android:text="@string/hello"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:id="@+id/newbutton"
android:clickable="true"
android:onClick="clickImage"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" />
Al ejecutar este código y hacer clic en la imagen, recibo este error:
01-24 19: 14: 09.534: Error/AndroidRuntime (1461): java.lang.illegalstateException: no pudo encontrar un método clickimage (ver) en la actividad
Aquí está la solución:
El XML:
<ImageButton
android:src="@drawable/tbnewbutton"
android:text="@string/hello"
android:layout_width="wrap_content"
android:layout_alignParentRight="true"
android:id="@+id/newbutton"
android:clickable="true"
android:onClick="clickNew"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="@null" />
El código :
public void clickNew(View v)
{
Toast.makeText(this, "Show some text on the screen.", Toast.LENGTH_LONG).show();
}
Solución
Como otros dijeron: Haz esto un ImageButton
y definir su atributo OnClick
<ImageButton
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="left"
android:onClick="scrollToTop"
android:src="@drawable/to_top_button"
/>
La imagen está aquí codificada en un archivo res/drawable/to_top_button.png. Si el usuario hace clic en el botón, el método scrollToTop()
se llama. Este método debe declararse en la clase que establece el diseño con el ImageButton
como su diseño de contenido.
public void scrollToTop(View v) {
...
}
Definir el controlador OnClick de esta manera le ahorra mucha escritura y también evita la necesidad de clases internas anónimas, lo cual es beneficioso para la huella de la memoria.
Otros consejos
Hace un ImageButton ¿Haz lo que quieras?
El mensaje de error que recibe implica que no tiene un método en su actividad que coincida con su controlador OnClick.
Deberías tener algo como clickImage(View view)
en su actividad con la implementación de manejo de clics.
Podrías usar la clase ImageButton ...http://developer.android.com/reference/android/widget/imagebutton.html
Utilizar una ImageButton ;)
Ha establecido el método OnClick para llamar a "ClickImage" cuando se hace clic en la imagen en su XML, pero no ha creado un método de ClickImage en su código. No deberías necesitar establecer el oyente OnClick en absoluto. Simplemente implemente el método de su XML y debe estar configurado.