On Oct 7, 2011, at 1:10 PM, G.B. wrote:
> As Monodroid has not implemented that method, I found in the Forum, a similar
> problem in the case of NetworkInfo. Trying to do the same I end up with:
>
> IntPtr getParcelableExtra = JNIEnv.GetMethodID(intent.Class.Handle,
> "getParcelableExtra", "(Ljava/lang/String;)Landroid/os/Parcelable;");
> IntPtr _ni = JNIEnv.CallObjectMethod(intent.Handle, getParcelableExtra, new
> JValue(new Java.Lang.String(BluetoothDevice.ExtraDevice)));
> BluetoothDevice device = new BluetoothDevice(_ni);
>
> But the last method has no IntPtr parameter (_ni) to use....
The solution is to use the JavaCast<T>()[0] extension method:
var device = new Java.Lang.Object(_ni).JavaCast<BluetoothDevice>();
The reason we do it that way is because people wanted to create an instance of
a type, saw the (IntPtr) constructor, and would do "silly" things such as:
var v = new BluetoothDevice (IntPtr.Zero);
then ask why they were getting java.lang.NullPointerExceptions when they used
`v`. To avoid this scenario, we hide the (IntPtr) constructor on sealed/etc.
types.
- Jon
[0]
http://docs.mono-android.net/index.aspx?link=M%3aAndroid.Runtime.Extensions.JavaCast``1(Android.Runtime.IJavaObject)
_______________________________________________
Monodroid mailing list
[email protected]
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid