Mono Droid onClick event not found
I have the following layout:
<Button android:id="@+id/MyButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/Hello"
android:clickable="true"
android:onClick="Foo"
/>
And this in my Activity:
[Activity(Label = "LayoutTest", MainLauncher = true, Icon = "@drawa开发者_运维问答ble/icon")]
public class Activity1 : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
}
public void Foo(View v)
{
Toast.MakeText(v.Context, "Bar", ToastLength.Long).Show();
}
}
When I debug this in the emulator the app crashes when I click MyButton with the following excerpt in the log:
E/AndroidRuntime( 507): FATAL EXCEPTION: main
E/AndroidRuntime( 507): java.lang.IllegalStateException: Could not find a method Foo(View) in the activity class helloworld.Activity1 for onClick handler on view class android.widget.Button with id 'MyButton'
E/AndroidRuntime( 507): at android.view.View$1.onClick(View.java:2059)
E/AndroidRuntime( 507): at android.view.View.performClick(View.java:2408)
E/AndroidRuntime( 507): at android.view.View$PerformClick.run(View.java:8816)
E/AndroidRuntime( 507): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime( 507): at android.os.Handler.dispatchMessage(Handler.java:92)
MonoDroid does not support registering events in this way.
You need to hook up the events yourself in your activity's OnCreate.
Update: As an update, MonoDroid does now support this: http://docs.xamarin.com/guides/android/advanced_topics/java_integration_overview/working_with_jni/#_ExportAttribute_and_ExportFieldAttribute
In addition to an [Export ("javamethodname")]
attribute on the onClick
methods and a reference to Mono.Android.Export
, you also need
using Java.Interop;
精彩评论