immagine cliccabile - Android
-
24-10-2019 - |
Domanda
Come faccio a fare un cliccabile immagine? Ho provato un certo senso, ma senza successo. Ecco l'ultimo codice ho provato (è cliccabile, ma ottiene l'errore):
ImageView btnNew = (ImageView) findViewById(R.id.newbutton);
btnNew.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// do stuff
}
});
ed ecco la parte da 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" />
Quando si esegue questo codice, e cliccando l'immagine ottengo questo errore:
01-24 19: 14: 09,534: ERRORE / AndroidRuntime (1461): java.lang.IllegalStateException: Impossibile trovare un metodo clickImage (View) nell'attività
ecco la soluzione:
L'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" />
Il codice:
public void clickNew(View v)
{
Toast.makeText(this, "Show some text on the screen.", Toast.LENGTH_LONG).show();
}
Soluzione
Come altro ha detto: rendere questa ImageButton
e definire l'attributo 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"
/>
L'immagine viene qui codificata in un file res / drawable / to_top_button.png. Se l'utente fa clic sul pulsante, il metodo scrollToTop()
viene chiamato. Questo metodo deve essere dichiarato nella classe che imposta il layout con la ImageButton
come il suo layout contenuto.
public void scrollToTop(View v) {
...
}
La definizione del gestore onclick in questo modo consente di risparmiare un sacco di battitura e impedisce anche la necessità di classi interne anonime, che è benefico per l'occupazione di memoria.
Altri suggerimenti
ImageButton fare quello che vuoi?
Il messaggio di errore che si ottiene implica che non si dispone di un metodo nella vostra attività che corrisponde al tuo gestore onclick.
Si dovrebbe avere qualcosa di simile clickImage(View view)
nella vostra attività con la gestione implementazione clic.
si potrebbe utilizzare la classe ImageButton ... http://developer.android.com/reference/android/widget/ImageButton.html
Usa un ImageButton ;)
Hai impostato il metodo onclick a chiamare "clickImage" quando si fa clic sull'immagine nel XML, ma non hanno creato un metodo clickImage nel codice. Non dovrebbe essere necessario impostare l'ascoltatore onclick a tutti. Basta implementare il metodo dal XML e si dovrebbe essere impostato.