Frage

Wie mache ich ein Bild anklickbar? Ich habe einige Möglichkeiten ausprobiert, aber ohne Erfolg. Hier ist der letzte Code, den ich ausprobiert habe (er ist anklickbar, aber Fehler erhält):

    ImageView btnNew = (ImageView) findViewById(R.id.newbutton);
    btnNew.setOnClickListener(new View.OnClickListener() {

          @Override
          public void onClick(View v) {

            // do stuff
          }

        });      

Und hier ist der Teil von 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" />

Wenn Sie diesen Code ausführen und auf das Bild klicken, erhalte ich diesen Fehler:

01-24 19: 14: 09.534: Fehler/AndroidRuntime (1461): Java.lang.IillegalstateException: konnte in der Aktivität keine Methode ClickImage (Ansicht) finden

Hier ist die Lösung:

Das 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" />

Der Code :

    public void clickNew(View v)
{
    Toast.makeText(this, "Show some text on the screen.", Toast.LENGTH_LONG).show();
}
War es hilfreich?

Lösung

Wie andere sagte: Machen Sie dies zu und ein ImageButton und definieren Sie sein Onclick -Attribut

<ImageButton
     android:layout_height="wrap_content"
     android:layout_width="wrap_content"
     android:layout_gravity="left"
     android:onClick="scrollToTop"
     android:src="@drawable/to_top_button"
/>

Das Bild ist hier in einer Datei res/Drawable/to_top_button.png codiert. Wenn der Benutzer auf die Schaltfläche klickt, die Methode scrollToTop() wird genannt. Diese Methode muss in der Klasse deklariert werden, die das Layout mit dem festlegt ImageButton als Inhaltslayout.

public void scrollToTop(View v) {
    ...
}

Das Definieren des Onclick -Handlers auf diese Weise erspart Ihnen viel Tippen und verhindert auch die Notwendigkeit an anonymen inneren Klassen, was für den Speicherpflichtzdruck vorteilhaft ist.

Andere Tipps

Macht ein Bildbutton Tun Sie, was Sie wollen?

Die Fehlermeldung, die Sie erhalten, impliziert, dass Sie keine Methode in Ihrer Aktivität haben, die Ihrem Onclick -Handler entspricht.

Sie sollten so etwas haben wie clickImage(View view) in Ihrer Aktivität mit der Implementierung der Klickhandhabung.

Sie könnten einfach die ImageButton -Klasse verwenden ...http://developer.android.com/reference/android/widget/imageButton.html

Verwenden ein Bildbutton ;)

Sie haben die Onclick -Methode festgelegt, um "ClickImage" aufzurufen, wenn das Bild in Ihrem XML geklickt wird. Sie haben jedoch keine ClickImage -Methode in Ihrem Code erstellt. Sie sollten den Onclick -Hörer überhaupt nicht einstellen müssen. Implementieren Sie einfach die Methode aus Ihrem XML und Sie sollten festgelegt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top