我能用ActivityGroup和NativeActivity吗?

4

我知道ActivityGroup已经被弃用了。

但是我正在尝试将NativeActivity的用户界面与一些Java/Android API View结合起来。

我试图制作一个混合用户界面,其中屏幕的一部分来自NativeActivity

我使用了这个示例并尝试了一些简单的活动与ActivityGroup一起使用。

这可以完美地与任何Activity一起使用(即使我使用VideoView播放视频)。

但是当我尝试加载NativeActivity时,它不起作用。(我从NDK示例中尝试了Teapot演示)。

所谓“不起作用”,是指从本机活动的window.getDecorView()始终返回透明视图,而不是实际内容视图。

我该怎么做?请帮帮我。

1个回答

2
这次我找到了一个解决方法,可以很好地处理它,但只适用于ndk演示。在你的ActivityGroup子类的onCreate方法中,编写以下代码即可。
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    LocalActivityManager lam = getLocalActivityManager();

    Intent intent = new Intent();
    intent.setClass(this, TeapotNativeActivity.class);

    Window window = lam.startActivity("xxx", intent);

    // reflect call "willYouTakeTheSurface"
    NativeActivity callback = JavaCalls.callMethod(window.getDecorView(), "willYouTakeTheSurface");
    if (callback != null) {
        window.takeSurface(null);
        getWindow().takeSurface(callback);
        getWindow().takeInputQueue(callback);
    }


    setContentView(window.getDecorView());

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接