开发者

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;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜