2011-07-17 3 views
5

Mam następujący układ:wydarzenie Mono Droid onClick Nie znaleziono

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

a to z mojej działalności:

[Activity(Label = "LayoutTest", MainLauncher = true, Icon = "@drawable/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(); 
    } 
} 

Kiedy debugowania to w emulatorze Aplikacja ulega awarii po kliknięciu myButton z następujący fragment w dzienniku:

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) 

Odpowiedz

8

MonoDroid nie obsługuje registerin g wydarzeń w ten sposób.

Musisz przypiąć zdarzenia samodzielnie w OnCreate swojej działalności.

Aktualizacja: jako aktualizacja, MonoDroid nie obsługują teraz to: http://docs.xamarin.com/guides/android/advanced_topics/java_integration_overview/working_with_jni/#_ExportAttribute_and_ExportFieldAttribute

+0

Jaki byłby sens atrybutu android: onClick? –

+0

Jeśli piszesz w Javie, robi to, jak oczekujesz. W MonoDroid nie ma zaimplementowanej funkcji. – jpobst

+1

Rozumiem. Dzięki. Czy istnieje dokumentacja na temat tego, co MonoDroid nie obsługuje? –

5

oprócz atrybutu [Export ("javamethodname")] sprawie metod onClick i odniesienie do Mono.Android.Export, trzeba także

using Java.Interop;