Java android JNI:应用程序停止工作

Java android JNI:应用程序停止工作,java,android,c,android-ndk,java-native-interface,Java,Android,C,Android Ndk,Java Native Interface,我不熟悉android编程,我认为应用程序停止工作的原因在于这里->我想将字符数组从JNI(c)返回到android(java) 因为我想把任何输出放在文本视图中 t3.setText(HelloWorld(str)); 程序在模拟器上运行,但一旦我在EditText中输入某个内容并按下按钮,它就会停止响应,然后关闭。可能只是输入错误,但我认为必须在第二个循环中使用k作为索引 你有: for(int c=0;c<length;c++) { for (int k = 0; k &

我不熟悉android编程,我认为应用程序停止工作的原因在于这里->我想将字符数组从JNI(c)返回到android(java

因为我想把任何输出放在文本视图中

 t3.setText(HelloWorld(str));

程序在模拟器上运行,但一旦我在EditText中输入某个内容并按下按钮,它就会停止响应,然后关闭。

可能只是输入错误,但我认为必须在第二个循环中使用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;cReleaseStringUTFChars(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);
for(int c=0;cReleaseStringUTFChars(env,jstring1,str);
return(*env)->NewStringUTF(env,S);

请注意内部循环中的更改。

问题仍然存在,是否确定通过“return(*env)->NewStringUTF(env,S)”返回结果的正确方法是正确的吗?不,我在构建和运行项目时没有收到任何错误,当我输入文本并点击enter PS时,它会在模拟器中停止响应一段时间。我还尝试使用不同的模拟器。请发布涉及这些方法的完整代码,以便我们可以尝试并重现该案例。
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);