2017-03-07 9 views
1

私はアンドロイドプログラミングの新機能です、アプリが動作を停止する理由はここにあります - >私はからJNI(C言語) JavaのアンドロイドJNI:アプリが動作を停止します

 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に何かを入力してボタンを押すと、応答が停止して閉じます。

答えて

1

たぶんそれは誤植かもしれませんが、2番目のループの内側でインデックスとして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); 

は、内側のループ内の変化に注意してください。

+0

問題が解決しない場合は、結果を返す正しい方法は「return(* env) - > NewStringUTF(env、S)」です。 – Pseudo

+0

エラーのログはありますか? – krlos77

+0

いいえ、ビルドしてプロジェクトを実行するときにエラーは発生しません。テキストを入力してPSを入力すると、エミュレータでしばらく応答しなくなります。私も別のエミュレータを使用しようとしました – Pseudo

関連する問題