Android 试图通过JNI创建JavaUI 我有一个基于NealId接口的应用程序,所以主要是用C++编写的。不过,我希望屏幕上有一些标准的UI元素,因此我编写了一个小java类,其中的方法在调用时应该将UI放在屏幕上。这样,当我想在屏幕上显示内容时,我可以通过JNI触发它
以下是函数:Android 试图通过JNI创建JavaUI 我有一个基于NealId接口的应用程序,所以主要是用C++编写的。不过,我希望屏幕上有一些标准的UI元素,因此我编写了一个小java类,其中的方法在调用时应该将UI放在屏幕上。这样,当我想在屏幕上显示内容时,我可以通过JNI触发它,android,java-native-interface,native-activity,Android,Java Native Interface,Native Activity,以下是函数: public static void initLogWindow(Activity activity) { class RunnableSetupWindow implements Runnable { public Activity activity; @Override public void run() { LinearLayout linear_layout = new LinearLayout(activity); Sc
public static void initLogWindow(Activity activity) {
class RunnableSetupWindow implements Runnable {
public Activity activity;
@Override
public void run() {
LinearLayout linear_layout = new LinearLayout(activity);
ScrollView scroll_view = new ScrollView(activity);
TextView text_view = new TextView(activity);
linear_layout.addView(scroll_view);
scroll_view.addView(text_view);
Window window = activity.getWindow();
window.takeSurface(null);
window.setContentView(linear_layout);
LoggingUtils.text_view = text_view;
text_view.setText("Hello world!");
}
}
RunnableSetupWindow setup_window = new RunnableSetupWindow();
text_view = null;
setup_window.activity = activity;
new Handler(Looper.getMainLooper()).post(setup_window);
}
当我从JNI触发它时,屏幕上没有显示任何内容。非常痛苦。如果我在函数中包含Log语句,它们会很好地打印到控制台,这样我就知道它正在被调用。但它不会在设备的屏幕上显示任何内容
奇怪的是,如果我把这段代码剪切粘贴到一个随机的空白项目中,它会做我想做的事情。文本框出现。很明显,这段代码能够在屏幕上生成文本字段
如果我进入C++代码,用这个方法中的JNI等价物替换JNI调用(调用这个方法),那么它也是有效的。 我已经验证了正在调用java方法。而文本字段显然是被创建的,并且是持久的-我可以检查和操作它的文本,从代码的角度来看,一切看起来都很好。它只是不显示在屏幕上
有人知道为什么吗?试着摆脱
窗口
的东西,然后在活动
上调用setContentView()
。啊,对了,忘了在原来的帖子中提到,但我也试过了。根据,当从JNI调用东西时需要它。我已经尝试在java上删除它,但是没有效果。(当我尝试将此代码粘贴到空白项目中以确保其工作时,这似乎并不重要。)