【问题标题】:Monodroid Java BindingMonodroid Java 绑定
【发布时间】:2012-05-31 22:33:47
【问题描述】:

我创建了一个 java 应用程序,作为我的 c# 应用程序和与 facebook 交谈之间的过渡。 这个帮助类允许我获取好友列表并在 facebook 墙上发帖。

我最近在尝试将我的一个 java 函数绑定到 monodroid 时遇到了一些问题。

我使用的java函数如下:

public void PostPicture(Activity mainActivity, String opponent, byte[] bytes, String picdescription, RequestListener listener)
{
    Bundle params = new Bundle();
    params.putString("name", picdescription);
    params.putByteArray("source", bytes);
    if(opponent != null)
    {
        params.putString("tags", opponent);
    }
    _asyncFacebook.request("me/photos", params, "POST", listener, null);        
}

我遇到的问题是尝试绑定 byte[] 字节。

JNIEnv.GetMethodID(_class_ref, "PostPicture", "(Landroid/app/Activity;Ljava/lang/String;[Ljava/lang/Byte;Ljava/lang/String;Lcom/Hitcents/PictureThis/BaseRequestListener;)V ");

其中 _class_ref 是我对包含“PostPicture”的 java 类的完全限定名。

[Ljava/lang/Byte 不是与字节 [] 的正确绑定吗?

【问题讨论】:

  • 我认为您不需要每个参数的完全限定名称。但是签名对我来说看起来不错。 "(Landroid/app/Activity;S;[B;S;Lcom/Hitcents/PictureThis/BaseRequestListener;)V"
  • 我很确定 monodroid 绑定 java 如果它还没有内置,你确实需要完全限定的名称。即整数是内置的,但对于字符串你需要完全限定的 Ljava/lang/String

标签: java android binding xamarin.android


【解决方案1】:

我能够回答我自己的问题。通过将字节数组作为 Ljava/lang/Object 传递,然后我可以将其转换为 java 端的 byte[]。

【讨论】:

    【解决方案2】:

    byte[] 不是[Ljava/lang/Byte;,而是[B。 [Ljava/lang/Byte; 将是 java.lang.Byte[](java.lang.Byte 实例的数组)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-14
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多