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();
}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top