
CPP中调用JAVA中的非静态方法需要先获得Activity的对象,这是区别所在。
在AppActivity中声明一个静态变量public static AppActivity con;在AppActivity的create中对此变量进行赋值
@OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); con = this; }在AppActivity中添加一个获得该对象的方法
public static Object returnActivity() { return con; }在cpp中添加方法
voID HelloWorld::onClickLogin(){#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) { JniMethodInfo info; jobject activityObj; bool isHaveObj = JniHelper::getStaticmethodInfo(info,"org/cocos2dx/cpp/AppActivity","returnActivity","()Ljava/lang/Object;"); if (isHaveObj) { activityObj = info.env->CallStaticObjectMethod(info.classID,info.methodID); log("jni:obj has find."); } else { log("jni:obj is null"); } JniMethodInfo methodInfo; bool isHaveMethod = JniHelper::getmethodInfo(methodInfo,"onClickLogin","()V"); if (isHaveMethod) { methodInfo.env->CallVoIDMethod(activityObj,methodInfo.methodID); } }#endif}总结
以上是内存溢出为你收集整理的Cocos2dx C++中调用java非静态函数。全部内容,希望文章能够帮你解决Cocos2dx C++中调用java非静态函数。所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)