我可以将NativeActivity与ActivityGroup一起使用吗?

时间:2014-10-06 13:34:17

标签: android android-layout android-ndk activitygroup native-activity

我知道ActivityGroup已被弃用。

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

我正在尝试创建一个混合用户界面,其中部分屏幕来自NativeActivity

I used this example并尝试了ActivityGroup一些简单的活动。

这与任何Activity完美配合(即使我使用VideoView播放视频)。

但是当我尝试加载NativeActivity时,它无效。 (我尝试过来自NDK样本的 Teapot demo

“不工作”我的意思是window.getDecorView()来自原生活动,它总是返回透明视图,而非实际内容视图。

我该怎么办?请帮帮我。

1 个答案:

答案 0 :(得分: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());

}