I have this Button inside a RelativeLayout which is included as part of a custom ListView row Layout.
<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" />
When the user clicks the Button, I want the Button to call this function:
public void myClickHandler(View v)
{
Console.WriteLine ((v as Button).Text);
}
However, I am getting this error
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'
I am trying to differentiate between the different buttons I have in that ListView. Also, each row has multiple Buttons.
Edit:
Don't use tags in Buttons it can cause performance drop during ListView scrolling. The solution below is a better option.
Add the attribute [Java.Interop.Export]
to your click handler method:
[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);
}
This will expose the method to Java via the Generated Callable Wrapper for your activity so it can invoked from the Java runtime.
See:
Using [Java.Interop.Export]
requires you to add the Mono.Android.Export
assembly to your project.
Therefore this feature is only available for Indie and higher licences.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With