diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java index e699c2abee..d7c8515b48 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterFragmentActivity.java @@ -46,6 +46,7 @@ import io.flutter.embedding.engine.FlutterEngine; import io.flutter.embedding.engine.FlutterShellArgs; import io.flutter.embedding.engine.plugins.util.GeneratedPluginRegister; import io.flutter.plugin.platform.PlatformPlugin; +import io.flutter.util.ViewUtils; /** * A Flutter {@code Activity} that is based upon {@link FragmentActivity}. @@ -65,7 +66,8 @@ public class FlutterFragmentActivity extends FragmentActivity // FlutterFragment management. private static final String TAG_FLUTTER_FRAGMENT = "flutter_fragment"; // TODO(mattcarroll): replace ID with R.id when build system supports R.java - private static final int FRAGMENT_CONTAINER_ID = 609893468; // random number + public static final int FRAGMENT_CONTAINER_ID = + ViewUtils.generateViewId(609893468); // random number /** * Creates an {@link Intent} that launches a {@code FlutterFragmentActivity}, which executes a diff --git a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java index 70e32c4c32..e49cd42906 100644 --- a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java +++ b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterFragmentActivityTest.java @@ -17,6 +17,7 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.os.Bundle; +import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import androidx.annotation.NonNull; @@ -104,6 +105,15 @@ public class FlutterFragmentActivityTest { activity.createFlutterFragment().getDartEntrypointLibraryUri(), "package:foo/bar.dart"); } + @Test + public void hasRootLayoutId() { + FlutterFragmentActivityWithRootLayout activity = + Robolectric.buildActivity(FlutterFragmentActivityWithRootLayout.class).get(); + activity.onCreate(null); + assertNotNull(activity.FRAGMENT_CONTAINER_ID); + assertTrue(activity.FRAGMENT_CONTAINER_ID != View.NO_ID); + } + @Test public void itRegistersPluginsAtConfigurationTime() { try (ActivityScenario scenario =