2012-02-12 12 views
1

私はANDROID SharedPreferencesをCから使用したいと思います。 使いやすくするために、クラスといくつかのメソッド(getIniParamInt、getIniParamStringなど)があります。 (テストのために簡略化し、SharedPref除去等)私はそれが返送-1私のJavaコードのC. パートにJNIからメソッドを呼び出す場合CallIntMethodの結果-1 - ANDROID JNI

問題がある:

public class IniManipulate { 
    public int getIniParamInt(String mezoNev) 
        {return 999;} // settings.getInt("abc", -9999); 

Cコード:

const char* paramOut 
paramOut = "abc"; 
jmethodID mid = (*env)->GetMethodID(env,cls1,"getIniParamInt","(Ljava/lang/String;)I"); 
    if (mid == NULL) {cDebug1 = 888;return; } 
jstring* parameter = (*env)->NewStringUTF(env, paramOut); 
    if (parameter == NULL) {return;} 
jint paramInt = (jint) (*env)->CallIntMethod(env,thiz, mid, parameter); 
cDebug1 = (int)paramInt; 

常にparamInt = -1で返されます。 999の代わりに。

私は既にウェブ全体を掘り下げてしまっており、解決策を見つけることができませんでした。 CallIntMethodの呼び出しに何が問題なのですか教えてください。 ありがとう!

答えて

1

うーん...解決策が見つかりました! 問題はJavaコードで 呼び出されたメソッドをpublicではなくprivateメソッドとして宣言する必要があります。

private int getIniParamInt(String mezoNev) 
       {return 999;} 

私は初心者ですから、実際の説明はわかりません...私はそれを試しました。 このような使い方を望む人にとっては、役に立つと思います。

関連する問題