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上删除它,但是没有效果。(当我尝试将此代码粘贴到空白项目中以确保其工作时,这似乎并不重要。)