You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:33:07