.h文件
#include <string> #include "cocos2d.h" using namespace std; namespace ThirdpartyManager { void test(); }
.cpp
#include "ThirdpartyManager.h" #include "cocos2d.h" #include <Jni.h> #include "platform/android/jni/JniHelper.h" #define JAVA_CLASSNAME "org/cocos2dx/cpp/AppActivity" using namespace cocos2d; namespace ThirdpartyManager{ void test() { cocos2d::log("调用test"); JniMethodInfo minfo; bool isHave = JniHelper::getMethodInfo(minfo,JAVA_CLASSNAME,"test", "()V"); if (isHave) { cocos2d::log("调用test成功"); minfo.env->CallVoidMethod(minfo.classID, minfo.methodID); } else { cocos2d::log("JniFun call callJava_getAppVersion error!"); } } }
java代码:
public class AppActivity extends Cocos2dxActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.setEnableVirtualButton(false); super.onCreate(savedInstanceState); // Workaround in https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508 if (!isTaskRoot()) { // Android launched another instance of the root activity into an existing task // so just quietly finish and go away, dropping the user back into the activity // at the top of the stack (ie: the last state of this task) // Don't need to finish it again since it's finished in super.onCreate . return; } // DO OTHER INITIALIZATION BELOW } public void test(){ Log.d("test","调用test方法"); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(AppActivity.this,"test```````````````",Toast.LENGTH_SHORT).show(); AlertDialog.Builder bl = new AlertDialog.Builder(AppActivity.this); bl.setTitle("test"); bl.setMessage("test~~~~~~~~~~~~~~"); bl.show(); } }); } }然后在这一步报错:
请问怎么解决?