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

迁移旧Fragment应用到Jetpack Compose时Activity遇InflateException问题

解决Jetpack Compose Activity启动时因screen_simple.xml引发的崩溃

问题核心

你错误地沿用了Fragment的onCreateView实现方式返回ComposeView,导致系统尝试往该View中添加原生视图(来自系统默认的screen_simple.xml),而ComposeView不支持添加子原生视图,触发崩溃。

修复步骤

  1. 移除onCreateView的重写:Activity不需要重写这个方法,这是Fragment特有的逻辑。
  2. 在onCreate中使用setContent设置Compose内容:这是Compose Activity的标准初始化方式。

正确代码示例

class FrameActivity : AppCompatActivity(), KoinComponent {
    lateinit var navController: NavHostController
    private val viewModel: MainNavigationViewModel by viewModel()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // 初始化导航控制器(根据实际需求调整,比如结合ViewModel或导航图)
        navController = NavHostController(this).apply {
            setGraph(R.navigation.your_nav_graph)
        }

        setContent {
            // 全局MaterialTheme,保留你需要的主题样式
            MaterialTheme(
                colorScheme = MaterialTheme.colorScheme,
                typography = MaterialTheme.typography
            ) {
                Scaffold { innerPadding ->
                    NavHost(
                        navController = navController,
                        startDestination = "your_initial_route",
                        modifier = Modifier.padding(innerPadding)
                    ) {
                        // 注册你的Compose页面路由
                        composable("your_initial_route") {
                            // 页面内容
                        }
                    }
                }
            }
        }
    }
}

额外说明

  • 你当前设置的Theme.Material3.Light.NoActionBar主题完全可用,无需修改或移除,问题与主题、过渡动画无关。
  • 替换为ComponentActivity时,代码逻辑保持一致,仅需修改父类继承。

内容的提问来源于stack exchange,提问作者Kabliz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:12:35