高手看一下这个  还有一些问题想请教 加一下我的QQ吧 谢谢 287605927   MSN:[email protected]
先定义一个 class B{ 
int i;
int j;},有另一个java类 
class A{ 
int a;
B b = new B();
}   
现在用jni方法 去得类A的参数的标号
jclass clazz = (*e)->findclass(e,"A");
jFieldID a=  (*e)->GetfieldID(e, clazz, "a", "I");
jFiledID b =(*e)->GetfieldID(e,clazz,"?","?");取得类参数的ID该如何取??谢谢各位大侠给个建议啊!!另外取得了这个参数标识 我有怎么在jni中给这个标识里的两个参数i和j赋值呢?

解决方案 »

  1.   


    char * ResourceMgr::GetBmp(JNIEnv* env,jobject obj)
    {
    jclass jResMgr;
    jmethodID jID;
    jfieldID fid;
    LOGI("ready to find java class");
    jResMgr=env->FindClass("com/test/w4e/w4e");
    if (jResMgr==NULL)
    {
    LOGI("java class not found");
    return NULL;
    }
    else
    {
    LOGI("java class found");
    fid = env->GetStaticFieldID(jResMgr, "res","Landroid/content/res/Resources;");
    if (fid!=NULL)
    {
    jobject res = env->GetStaticObjectField(jResMgr, fid);
    if (res==NULL)
    {
    LOGI("NULL RES");
    }
    else
    {
    LOGI("get res successed");
    jID=env->GetMethodID(jResMgr,"PostBmptoJni","(ILandroid/content/res/Resources;)[B");
    if (jID!=0)
    {
    LOGI("java method found ID=%d",jID);
    jobject ob=env->AllocObject(jResMgr);
    LOGI("ready to call java method");
    //jbyteArray bl=(jbyteArray)env->CallObjectMethod(ob,jID,ji,res);
    jbyteArray bl=(jbyteArray)env->CallObjectMethod(ob,jID,0,res);
    jsize datalen=env->GetArrayLength(bl); LOGI("call java method complete bllen=%d",datalen);
    if (bl!=NULL)
    {
    LOGI("jByte Array is not null");
    //jbyte * jb;
    //env->GetByteArrayRegion(bl,env->GetArrayLength(bl),env->GetArrayLength(bl),jb);
    unsigned char* data = (unsigned char*)env->GetByteArrayElements(bl,0);
    LOGI("data=%s size of data=%d",data,sizeof(data));
    LOGI("ready to Create file");
    unlink("/sdcard/hello.zip");
    bool i=WriteStream("/sdcard/hello.zip",(char*)data,datalen);
    LOGI("Write returns %d",i);
    env->ReleaseByteArrayElements(bl,(jbyte*)data,0);
    }
    }
    else
    {
    LOGI("java methord not found");
    }
    }
    }
    }
    return NULL;
    }
      

  2.   

    我是说一个类作为另一个类的引用类型变量 在jni中怎么获取他的jfieldID啊 谢谢!!