我是Android编程的新手,我认为应用停止工作的原因在于 - >我想将 JNI(在c)中的char数组返回到android( java )
for(int c=0;c<length;c++) {
for (int k = 0; k < 36; k++) {
if (a[c] == string2[j]) {
S[c]=string2[j];
}
}
}
(*env)->ReleaseStringUTFChars(env, jstring1, str);
return (*env)->NewStringUTF(env,S);
并在java中:
public native String HelloWorld(String stri);
因为我想把输出放在 TextView
中 t3.setText(HelloWorld(str));
该程序在模拟器上运行,但是一旦我在EditText中输入内容并按下一个按钮,它就会停止响应然后关闭。
答案 0 :(得分:1)
也许这只是一个错字,但我认为你必须使用k作为第二个循环中的索引。
你有:
for(int c=0;c<length;c++) {
for (int k = 0; k < 36; k++) {
if (a[c] == string2[j]) {
S[c]=string2[j];
}
}
}
(*env)->ReleaseStringUTFChars(env, jstring1, str);
return (*env)->NewStringUTF(env,S);
它应该是:
for(int c=0;c<length;c++) {
for (int k = 0; k < 36; k++) {
if (a[c] == string2[k]) {
S[c]=string2[k];
}
}
}
(*env)->ReleaseStringUTFChars(env, jstring1, str);
return (*env)->NewStringUTF(env,S);
注意内循环内部的变化。