[mono-android] ClassNotFoundException with ItemClick event
Fabrice
faze1224 at gmail.com
Fri Mar 25 11:30:46 EDT 2011
I'll continue to search a bit before sending you the project.
I suppose the exception is swallowed somewhere in the stack, it's why I
don't have the catch block executed. I see it on VS only because I've
activate to stop on all exceptions. The monodroid exceptions are not like a
"normal" .net exception and the difference between first-chance exception
and unhanded exception is not clear...
I've reproduced the ListView tutorial (
http://mono-android.net/Tutorials/Hello_Views/List_View) and still have this
exception behind the scene... Is it normal ?
After this exception, the tutorial list seems to works fine ... so maybe the
list in my project is not working due to something else than this exception.
I'll continue to search...
@Jonathan: changing Linking to "None" doesn't modify the behaviour.
Thank you for your help
Fabrice
On Fri, Mar 25, 2011 at 3:43 PM, Jonathan Pobst <monkey at jpobst.com> wrote:
> If you have linking on (Project Properties -> Mono for Android -> Linking),
> try turning it off and see if it works.
>
> Jonathan
>
>
>
> On 3/25/2011 9:21 AM, Fabrice wrote:
>
>>
>>
>> I've set up the log as requested:
>>
>> protected override void OnCreate(Bundle bundle)
>>
>> {
>> base.OnCreate(bundle);
>>
>> //Set the Activity's view to our list layout
>> SetContentView(Resource.Layout.DeviceList);
>>
>>
>> var server =new MockServer();
>> var listView
>> =this.FindViewById<ListView>(Resource.Id.listView);
>>
>> listView.Adapter =new
>> DeviceAdapter(this,Resource.Layout.OnOffDevice, server.GetDevices());
>>
>>
>> //Wire up the click event
>> try
>> {
>> listView.ItemClick +=new
>> EventHandler<ItemEventArgs>(showToast);
>>
>> }
>> catch (Java.Lang.Throwable e)
>> {
>> *Android.Util.Log.Error("no!", e,"this is the java-side
>> exception.");*
>>
>> Toast.MakeText(this,"Error
>> reported",ToastLength.Long).Show();
>>
>> }
>> }
>>
>> Problem:
>> Visual Studio correctly stop on the error when adding the handler. To be
>> more detailed, it stop 2x:
>>
>> - Instance {Java.Lang.ClassNotFoundException: Exception of type
>> 'Java.Lang.ClassNotFoundException' was thrown.
>> at Android.Runtime.JNIEnv.CallObjectMethod (IntPtr jobject, IntPtr
>> jmethod, Android.Runtime.JValue[] parms) [0x00024] in
>> /home/jpobst/Desktop/mondroid/Mono.Android/src/Runtime/JNIEnv.cs:328
>> at Android.Runtime.JNIEnv.FindClass (System.String classname)
>> [0x00032] in
>> /home/jpobst/Desktop/mondroid/Mono.Android/src/Runtime/JNIEnv.cs:155
>> } Java.Lang.ClassNotFoundException
>>
>> - Instance {Java.Lang.NoClassDefFoundError: Exception of type
>> 'Java.Lang.NoClassDefFoundError' was thrown.
>> at Android.Runtime.JNIEnv.FindClass (System.String classname)
>> [0x00066] in
>> /home/jpobst/Desktop/mondroid/Mono.Android/src/Runtime/JNIEnv.cs:159
>> at Android.Runtime.JNIEnv.FindClass (System.Type type) [0x00000] in
>> /home/jpobst/Desktop/mondroid/Mono.Android/src/Runtime/JNIEnv.cs:126
>> } Java.Lang.NoClassDefFoundError
>>
>> But I don't know why, it completely stop executing code: the catch is
>> not executed (no log, no Toast)
>> I also tested without the debugger (only on the device), same behaviour...
>> I also tested using a "catch(Exception exc)" to be more generic, same
>> behaviour: the catch code is not executed
>>
>> adb logcat (activity name is "HoMIDroid.DeviceActivity") doesn't show
>> any error:
>>
>> I/monodroid(21979): Activating instance of type HoMIDroid.DeviceActivity
>> I/monodroid(21979): signature
>> D/dalvikvm(21465): GC_EXPLICIT freed 119 objects / 10144 bytes in 76m
>> I/BatteryStatsImpl( 96): notePhoneSignalStrengthLocked: 3->4
>> D/SurfaceFlinger( 96): Layer::requestBuffer(this=0x91c6d8), index=1,
>> pid=21979, w=480, h=800 success
>> D/SurfaceFlinger( 96): Layer::requestBuffer(this=0x91c6d8), index=0,
>> pid=21979, w=480, h=800 success
>> D/SurfaceFlinger( 96): Layer::requestBuffer(this=0x91c6d8), index=1,
>> pid=21979, w=480, h=800 success
>> D/dalvikvm(21473): GC_EXPLICIT freed 491 objects / 25424 bytes in 65ms
>> D/PowerManagerService( 96): New lightsensor value:90, lcdValue:160
>> D/PowerManagerService( 96): New lightsensor value:40, lcdValue:160
>> W/KeyCharacterMap(21979): Bad keycharmap - filesize=32
>> W/KeyCharacterMap(21979): Error loading keycharmap file
>> '/system/usr/keychars/bravo-keypad.kcm.bin'.
>> hw.keyboards.0.devname='bravo-keypad'
>> W/KeyCharacterMap(21979): Using default keymap:
>> /system/usr/keychars/qwerty.kcm.bin
>> D/Sensors ( 96): close_akm, fd=170
>> D/SurfaceFlinger( 96): Layer::setBuffers(this=0x9d0a88), pid=211,
>> w=480, h=800
>> D/SurfaceFlinger( 96): Layer::setBuffers(this=0x9d0a88), pid=211,
>> w=480, h=800
>> D/SurfaceFlinger( 96): Layer::requestBuffer(this=0x9d0a88), index=0,
>> pid=211, w=480, h=800 success
>> D/SurfaceFlinger( 96): Layer::requestBuffer(this=0x9d0a88), index=1,
>> pid=211, w=480, h=800 success
>> D/AK8973 ( 72): Compass CLOSE
>> V/AlarmManager( 96): Adding Alarm{46982c80 type 0 com.htc.launcher}
>> mars 26 12:00:00 matin
>> D/PowerManagerService( 96): New lightsensor value:90, lcdValue:160
>> I/BatteryStatsImpl( 96): notePhoneSignalStrengthLocked: 4->3
>> I/BatteryStatsImpl( 96): notePhoneSignalStrengthLocked: 3->4
>> D/dalvikvm(21481): GC_EXPLICIT freed 6522 objects / 356664 bytes in 94ms
>>
>>
>>
>> Thank you for your help
>> Fabrice
>>
>>
>>
>> On Fri, Mar 25, 2011 at 2:27 PM, Jonathan Pryor <jpryor at novell.com
>> <mailto:jpryor at novell.com>> wrote:
>>
>> On Mar 25, 2011, at 5:27 AM, Faze Faze wrote:
>> > I'm new to monodroid (and new to android dev) and I'm facing a
>> problem when binding the ItemClick event.
>> ...
>> >
>> > protected override void OnCreate(Bundle bundle)
>> > {
>> ...
>> > //Wire up the click event
>> try {
>> > listView.ItemClick += new
>> EventHandler<ItemEventArgs>(showToast);
>>
>> } catch (Java.Lang.Throwable e) {
>> Android.Util.Log.Error("no!", e, "this is the
>> java-side exception.");
>> }
>>
>> > Do you have any idea on where the problem is ?
>>
>> No, because we don't know what the Java-side message and stack trace
>> are. (Fortunately, the next release will -- finally! -- include the
>> Java side exception information when you call
>> Java.Lang.Throwable.ToString()...)
>>
>> The above code wraps the call in a try/catch block, then uses
>> Log.Error() to print the error message on the Android error log. You
>> can then use `adb logcat` to view the Java-side exception message,
>> which will either provide you enough information to figure out
>> what's wrong, or provide us enough information to investigate
>> further. :-)
>>
>> - Jon
>>
>> _______________________________________________
>> Monodroid mailing list
>> Monodroid at lists.ximian.com <mailto:Monodroid at lists.ximian.com>
>>
>>
>> UNSUBSCRIBE INFORMATION:
>> http://lists.ximian.com/mailman/listinfo/monodroid
>>
>>
>>
>>
>> _______________________________________________
>> Monodroid mailing list
>> Monodroid at lists.ximian.com
>>
>> UNSUBSCRIBE INFORMATION:
>> http://lists.ximian.com/mailman/listinfo/monodroid
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/mailman/private/monodroid/attachments/20110325/52923ffd/attachment-0001.html
More information about the Monodroid
mailing list