私は jni を使用しており、C++ クラスから通常のアクティビティで Java 関数を呼び出すことができますが、非アクティビティ クラスで Java 関数を呼び出そうとすると、コードが機能しません。
つまり
jclass activityclass = env->FindClass("com/example/test/MyActivity);
jmethodID methodID = env->GetMethodID(activityclass,"FunctionName","()V");
env ->CallVoidMethod(obj,methodID);
これは機能します。非アクティビティの通常の Java クラスから同じ関数 (同じ名前) を呼び出そうとすると、機能しません。
jclass regularclass = env->FindClass("com/example/test/MyRegularClass);
jmethodID methodID = env->GetMethodID(regularclass ,"FunctionName","()V");
env ->CallVoidMethod(obj,methodID);
非アクティビティクラスで関数を呼び出せないのはなぜですか? 私の間違いは何ですか?
私の MyRegularClass
public class MyRegularClass{
public static void FunctionName(){
Log.i("Java Worked","Java Worked");
}
}
私のアクティビティクラス
public class MyActivity{
system.load.library("mylib");
@Override
public void onCreate(Bundle savedInstanceState){
....
....
testJNI();
}
public static void FunctionName(){
Log.i("Activity Worked","Activity Worked");
}
public native void testJNI();
}