Как вызвать переопределенный метод суперкласса в Java через JNI?

m пытается переопределить метод обратного вызова действия с нативной реализацией (чтобы подключить Lua к действию). Однако я'Мы столкнулись с проблемой, пытаясь вызвать метод суперкласса в коде JNI, как это требуется для обратного вызова.

Например, у меня есть такой класс:

class TestActivity extends Activity {

    @Override
    protected native void onCreate(Bundle bundle);

    static {
        System.loadLibrary("test-jni")
    }
}

И я'я пытаюсь реализоватьTestActivity.onCreate() в С это так:

void Java_test_TestActivity_onCreate(JNIEnv* env, jobject obj, jobject bundle)
{
    // Get class, super class, and super class method ID...
    jclass objcls = (*env)->GetObjectClass(env, obj);
    jclass sprcls = (*env)->GetSuperclass(env, objcls);
    jmethodID methid = (*env)->GetMethodID(env, sprcls, "onCreate", "(Landroid/os/Bundle;)V");

    // Call super class method...
    (*env)->CallVoidMethod(env, obj, methid, bundle);
}

Тем не менее, когда я пытаюсь этот код,TestActivity.onCreate() называется внутри себя, а неActivity.onCreate(), Производя эту ошибку:

JNI ERROR (app bug): local reference table overflow (max=512)

Я думал, что jmethodID специфичен для класса и идентифицирует метод super, однако это нет дело.

Итак, мой вопрос, как вы реализуете это ...

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
}

В JNI?

Ответы на вопрос(2)

Ваш ответ на вопрос