我是android开发新手, 我希望通过 EditText 获取用户输入,将其存储为String。通过 JNI 将该字符串传递给 c 。当我按下一个按钮时,该字符串应该显示在 TextView 上,显示键入的内容和字符串的长度。 在android中:
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("native-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b1 = (Button) findViewById(R.id.bb1);
b1.setOnClickListener(
new Button.OnClickListener(){
public void onClick(View v){
TextView tv = (TextView) findViewById(R.id.sample_text);
EditText e1 = (EditText) findViewById(R.id.ee1);
TextView t2 = (TextView) findViewById(R.id.test1);
String str =e1.getText().toString();
tv.setText(HelloWorld(str)); // This should text
t2.setText("This should show length"HelloWorld(l)); //This should show length
}
}
);
}
public native String HelloWorld(String stri);`
并在c文件中:
`#include "HelloWorld.h"
#include <jni.h>
#include <string.h>
JNIEXPORT jstring JNICALL
Java_com_example_james_myapplication_MainActivity_HelloWorld(JNIEnv *env,jobject jobj,jstring jstring1,jint l /* this */) {
const char *str = (*env) ->GetStringUTFChars(env,jstring1,NULL);
return (*env) ->NewStringUTF(env,str);}`
我无法显示输入的长度(我得到错误'无法解析符号l'。我不确定我是否正在执行此代码,我的意思是将输入传递给c 请帮忙!提前谢谢。
答案 0 :(得分:0)
HelloWorld(l)
无法获得字符串的长度。我不确定你为什么会这么想。要获取字符串的长度,请调用variablename.length()
。所以这就是
String result = HelloWorld(str);
tv.setText(result); // This should text
t2.setText("This should show length" + result.length()); //This should show length