Android Studio平板模式下Composable函数断点未触发的问题求助
Android Studio平板模式下Composable函数断点未触发的问题求助
各位大佬好,我最近在开发一个适配多窗口尺寸的Jetpack Compose应用,遇到了一个百思不得其解的问题:当我在平板模式下运行应用时,设置在MyCityAppContent和MyCityDetailsScreen这两个Composable函数上的断点完全没有触发,但在调用它们之前的if分支里加Log.d却能正常打印日志,说明代码明明走到了这个分支里,就是断点没反应。
先贴一下关键的代码片段:
MyCityApp.kt中的核心逻辑
sealed class MyCityScreen(val route: String) { object Categories: MyCityScreen("Categories") object Recommendations: MyCityScreen("Recommendations") object Recommendation: MyCityScreen("Recommendation/{recommendationId}") { fun createRoute(recommendationId: Long) = "Recommendation/$recommendationId" } } @Composable fun MyCityApp( windowSize: WindowWidthSizeClass, navController: NavHostController = rememberNavController(), modifier: Modifier = Modifier ) { val viewModel: MyCityViewModel = viewModel() val myCityUiState = viewModel.uiState.collectAsState().value val contentType: MyCityContentType = when (windowSize) { WindowWidthSizeClass.Compact -> MyCityContentType.LIST_ONLY WindowWidthSizeClass.Medium -> MyCityContentType.LIST_ONLY WindowWidthSizeClass.Expanded -> MyCityContentType.LIST_AND_DETAIL else -> MyCityContentType.LIST_ONLY } if (contentType != MyCityContentType.LIST_AND_DETAIL) { // 手机/折叠屏模式的导航逻辑,此处断点正常工作 NavHost(navController = navController, startDestination = MyCityScreen.Categories.route) { // ... 省略导航项代码 } } else { // 平板模式,日志显示确实进入了这个分支 MyCityHomeScreen( contentType = contentType, myCityUiState = myCityUiState, onCategoryCardPressed = { viewModel.updateRecommendations(category = it) }, onDetailScreenBackPressed = { viewModel.resetHomeScreenStates() }, onRecommendationCardPressed = { viewModel.updateDetailsScreenStates( category = myCityUiState.currentSelectedCategory, recommendation = it ) } ) } }
MyCityHomeScreen的代码
@Composable fun MyCityHomeScreen( contentType: MyCityContentType, myCityUiState: MyCityUiState, onCategoryCardPressed: (Category) -> Unit, onRecommendationCardPressed: (Recommendation) -> Unit, onDetailScreenBackPressed: () -> Unit, modifier: Modifier = Modifier ) { // 这里的Log.d能正常打印,说明进入了对应分支 Log.d("HomeScreen", "isShowingHomepage: ${myCityUiState.isShowingHomepage}") if (myCityUiState.isShowingHomepage) { // 这个Composable上的断点未触发 MyCityAppContent( contentType = contentType, myCityUiState = myCityUiState, onCategoryCardPressed = onCategoryCardPressed, onRecommendationCardPressed = onRecommendationCardPressed, modifier = modifier ) } else { // 这个Composable上的断点也未触发 MyCityDetailsScreen( myCityUiState = myCityUiState, isFullScreen = true, onBackPressed = onDetailScreenBackPressed, modifier = Modifier ) } }
我使用的Android Studio版本是最新的:
Android Studio Hedgehog | 2023.1.1 Patch 2
Build #AI-231.9392.1.2311.11330709, built on January 18, 2024
Runtime version: 17.0.7+0-17.0.7b1000.6-10550314 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Linux 6.1.0-17-amd64
试过用Resizable AVD(平板模式)和Pixel Tablet API 34两种设备,结果都一样。有没有大佬遇到过类似的问题?求指点排查方向!
备注:内容来源于stack exchange,提问作者Alexandru Gheorghe
相关产品推荐
相关产品推荐

