1.在Activity里面声明一个native接口,生成.h头文件等过程略,参考其他文档;
public native Object getTextViewFromJni();
2.在.cpp文件实现如下函数:
JNIEXPORT jobject JNICALL Java_com_cjl_helloworld_MainActivity_getTextViewFromJni(JNIEnv *env, jobject jcontext) {
//找到TextView的字节码 jclass cls_textview = env->FindClass("android/widget/TextView"); //获取TextView的构造方法id jmethodID txt_con_id = env->GetMethodID(cls_textview,"<init>", "(Landroid/content/Context;)V");
//new 一个TextView出来 jobject jtextview =env->NewObject(cls_textview,txt_con_id,jcontext);
//返回 return jtextview; }
3.在Activity中调用:
public void initTextView() { mBaseLayout = (LinearLayout) this.findViewById(R.id.base_layout); // TextView textView = new TextView(this); TextView textView=(TextView) getTextViewFromJni(); textView.setText("Hello TextView"); mBaseLayout.addView(textView); }