[mono-android] ClassNotFoundException with ItemClick event
Fabrice
faze1224 at gmail.com
Fri Mar 25 10:21:11 EDT 2011
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> 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
>
> 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/8fd0e851/attachment-0001.html
More information about the Monodroid
mailing list