Access FlutterFragmentActivity's root content view ID using ViewUtils.generateViewId (flutter/engine#30595)

This commit is contained in:
Jaden
2022-01-21 07:15:15 +08:00
committed by GitHub
parent 004fee7923
commit 97287722fe
2 changed files with 13 additions and 1 deletions

View File

@@ -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

View File

@@ -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<FlutterFragmentActivity> scenario =