Отличается ли "сигнатура метода" JNI, если определен метод для возврата (статический) интерфейс?
В моем классе Java у меня есть этот метод:
public SharedPreferences.Editor getSharedPrefsEditor() {
return mActivity.getPreferences(Context.MODE_PRIVATE).edit();
}
SharedPreferences.Editor - статический интерфейс в SharedPreferences.
В моем C ++ JNI-коде я делаю это:
// 'env' is the java environment that JNI passes to us
// 'jObject' is the one that JNI passes to us (along with env)
jclass javaCallerClass = env->GetObjectClass(jObject);
jmethodID methodId_getSharedPrefsEditor = env->GetMethodID(
javaCallerClass,
"getSharedPrefsEditor",
"()Landroid/content/SharedPreferences/Editor;");
По какой-то странной причине это не работает. Он компилируется, но во время выполнения я получаю это:
DEBUG / dalvikvm (19020): GetMethodID:
метод не найден:
Lcom / mangotaster / madballs / MyRenderer; .getSharedPrefsEditor :() Landroid / содержание / SharedPreferences / редактор;
Я без проблем вызываю другие методы в этом классе.
Единственное изменение, похоже, возвращаемое значение.
Я пытался вызвать функцию edit () прямо из кода JNI, но получил ту же ошибку - из-за этого я считаю, что моя подпись функции "() Landroid / content / SharedPreferences / Editor;" действительно неправильно.
Дополнительная информация о SharedPreferences класс.