Xamarin.Android: Wie zu erfassen Button-Events im OnClick XML-Attribut definiert?

Ich habe diesen Button in einem RelativeLayout, das als Teil eines benutzerdefinierten ListView Zeilenlayouts enthalten ist.

<Button p1:text="Edit" p1:layout_width="75dp" p1:layout_height="wrap_content" p1:id="@+id/editButton" p1:layout_centerHorizontal="true" p1:background="@drawable/btn_blue" p1:textColor="@color/white" p1:focusable="false" p1:layout_below="@id/sparyTableLayout" p1:textAppearance="?android:attr/textAppearanceMedium" p1:onClick="myClickHandler" /> 

Wenn der Benutzer auf die Schaltfläche klickt, möchte ich, dass die Schaltfläche diese Funktion aufruft:

 public void myClickHandler(View v) { Console.WriteLine ((v as Button).Text); } 

Allerdings bekomme ich diesen Fehler

 java.lang.IllegalStateException: Could not find a method myClickHandler(View) in the activity class Test_Project.MyActivity for onClick handler on view class android.widget.Button with id 'editButton' 

Ich versuche, zwischen den verschiedenen Tasten zu unterscheiden, die ich in diesem ListView habe. Außerdem hat jede Zeile mehrere Schaltflächen.

Bearbeiten:

Verwenden Sie keine Tags in Schaltflächen, die während des ListView-Scrolls einen Leistungsabfall verursachen können. Die Lösung unten ist eine bessere Option.

  • Initialisieren von Voreinstellungen aus XML in der Hauptaktivität
  • Android XML Prozent Symbol
  • Welche Fehler werden in "build" in Android Studio erkannt - Rolle von Gradle
  • Sollte "sp" statt "dp" für Textgrößen verwenden
  • Android-XML-Fehler: "Keine Ressource gefunden, die mit dem Vornamen übereinstimmt" mit RelativeLayout (@ id / LinearLayout_acc, @ id / ProgressBar_statusScreen)
  • Erhalten Sie Stilattribute für das Kind aus der Stildefinition des Elternteils
  • ScrollView blättert nicht nach unten
  • Lesen und Schreiben von XML-Dateien
  • One Solution collect form web for “Xamarin.Android: Wie zu erfassen Button-Events im OnClick XML-Attribut definiert?”

    Fügen Sie das Attribut [Java.Interop.Export] zu Ihrer Click-Handler-Methode hinzu:

     [Java.Interop.Export("myClickHandler")] // The value found in android:onClick attribute. public void myClickHandler(View v) // Does not need to match value in above attribute. { Console.WriteLine ((v as Button).Text); } 

    Dadurch wird die Methode Java über den generierten Callable Wrapper für Ihre Aktivität ausgesetzt, damit er aus der Java-Laufzeit aufgerufen werden kann.

    Sehen:

    1. Mono Für Android 4.2 Release Notes im Abschnitt "Exportieren beliebigen Java-Mitglied für eine bessere Java-Integration".

    Wichtige Notiz

    Mit [Java.Interop.Export] müssen Sie die Mono.Android.Export Assembly zu Ihrem Projekt hinzufügen.

    Deshalb ist diese Funktion nur für Indie und höhere Lizenzen verfügbar.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.