Java.lang.illegalStateException: неизнайлизированные LayoutCoordinates.
Пожалуйста, убедитесь, что при использовании композиции SharedTransitionScope,
модификатор передается в детское содержание или использует sharedtransitionlayout
. .
Что я наблюдал так FAR: < /p>
Если я удаляю Sharedbounds, аварий исчезает. < /p>
Все объекты, связанные с переходом (SharedTransitionScope, AnimatedVisibilyScope, SharedContentState), правильно инициализированы. /p>
Сбой происходит только на первом экране, который загружается. < /p>
Если я перейду к другому экрану Где Sharedbounds находится внутри Topappbar, он работает совершенно нормально (до тех пор, пока это не первый экран). < /p>
Любой экран, который устанавливается при ударе первого экрана, если он содержит эту настройку Appbar. /p>
Вот упрощенная версия кода, которая вызывает проблему: < /p>
Код: Выделить всё
Scaffold(
topBar = {
CenterAlignedTopAppBar(
title = {
with(sharedTransitionScope) {
Text(
modifier = Modifier.sharedBounds(
sharedContentState = rememberSharedContentState(
key = "TITLE_TRANSITION_KEY"
),
animatedVisibilityScope = animatedVisibilityScope
),
text = "My App",
fontWeight = FontWeight.Bold,
textAlign = TextAlign.Center
)
}
}
)
}
) { / Content / }
< /code>
Временный обходной путь, который работает: < /p>
Если я проверю Isready, прежде чем применять Sharedbounds, аварий избегается: < /p>
if (isReady) {
Modifier.sharedBounds(...)
}
< /code>
Но я хотел бы понять, почему это происходит и как правильно это исправить. < /p>
Мой вопрос: < /p>
< P> Почему SharedBounds внутри Topappbar сбои только при его использовании на первом экране, но не на последующих экранах? нагрузки? em> AbstractActivity.kt
abstract class AbstractActivity : ComponentActivity() {
@Inject
lateinit var preferences: PreferencesUseCase
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val themeId = preferences.getInt(
CommonConstants.PREFERENCE_THEME_ID_KEY, CommonConstants.THEME_DARK_KEY
)
val appTheme = ThemeHelper.getTheme(themeId, ThemeHelper.DEFAULT_THEME)
setTheme(appTheme.resourceId)
enableEdgeToEdge()
setContent {
ApplicationTheme(appTheme, direction = LayoutDirection.Rtl) {
AppContent()
}
}
}
@Composable
abstract fun AppContent()
}
Код: Выделить всё
@AndroidEntryPoint
class AppActivity : AbstractActivity() {
@Composable
override fun AppContent() {
val navController = rememberNavController()
SharedTransitionLayout {
NavHost(
navController = navController,
modifier = Modifier
.fillMaxSize()
.imePadding()
,
startDestination = AppDestinations.Main
) {
composable {
MainScreen(
sharedTransitionScope = this@SharedTransitionLayout,
animatedVisibilityScope = this
)
}
composable {
SettingsScreen(
sharedTransitionScope = this@SharedTransitionLayout,
animatedVisibilityScope = this
)
}
}
}
}
}
Код: Выделить всё
@Composable
fun MainScreen(
sharedTransitionScope: SharedTransitionScope,
animatedVisibilityScope: AnimatedVisibilityScope
) {
Scaffold(
topBar = {
with(sharedTransitionScope) {
CenterAlignedTopAppBar(
title = {
Text(
modifier = Modifier
.sharedBounds(
sharedContentState = rememberSharedContentState(
key = "TOOLBAR_TITLE_EXPLODE_BOUNDS"
),
animatedVisibilityScope = animatedVisibilityScope
)
,
text = stringResource(R.string.app_name),
fontWeight = FontWeight.Bold,
textAlign = TextAlign.Center,,
)
}
)
}
}
) { innerPadding ->
...
}
}
@Composable
fun SettingsScreen(
sharedTransitionScope: SharedTransitionScope,
animatedVisibilityScope: AnimatedVisibilityScope,
) {
Scaffold(
topBar = {
with(sharedTransitionScope) {
TopAppBar(
title = {
Text(
modifier = Modifier
.sharedBounds(
sharedContentState = rememberSharedContentState(
key = "TOOLBAR_TITLE_EXPLODE_BOUNDS"
),
animatedVisibilityScope = animatedVisibilityScope
)
,
text = stringResource(R.string.toolbar_title_settings),
fontWeight = FontWeight.Bold,
textAlign = TextAlign.Center
)
}
)
}
}
) { innerPadding ->
...
}
}
< /code>
Заранее спасибо за любые идеи! Я действительно ценю любую помощь в понимании, почему это происходит и как правильно это исправить. Если вам нужна дополнительная информация, не стесняйтесь спрашивать, и я буду рад предоставить дополнительную информацию.
Подробнее здесь: https://stackoverflow.com/questions/794 ... first-scre
Мобильная версия