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

Jetpack Compose中使用AndroidFragment<>加载Fragment遇异常求助

解决AndroidFragment在Compose中抛出"View is not within a subclass of FragmentActivity"异常

核心问题

你的MainActivity继承的是ComponentActivity,而AndroidFragment组件要求宿主Activity必须是FragmentActivity的子类(AppCompatActivity是FragmentActivity的子类,也可使用),否则无法获取Fragment所需的FragmentManager,从而触发该异常。

解决方案

将MainActivity的父类从ComponentActivity改为AppCompatActivity,并确保导入正确的包。

修改后的MainActivity.kt

import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.fragment.app.compose.AndroidFragment

class MainActivity : AppCompatActivity() { // 替换父类为AppCompatActivity
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        enableEdgeToEdge()
        setContent {
            DriveTestAceTheme {
                Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
                    Greeting(
                        name = "Android",
                        modifier = Modifier.padding(innerPadding)
                    )
                }
            }
        }
    }

    @Composable
    fun Greeting(name: String, modifier: Modifier = Modifier) {
        AndroidFragment<TestFragment>(
            modifier = Modifier.fillMaxSize()
        )
    }
}

额外注意点

  1. 确认build.gradle.kts中包含appcompat依赖(新建项目通常默认包含,若缺失需手动添加):
implementation("androidx.appcompat:appcompat:1.7.0") // 版本号可根据最新稳定版调整
  1. 你的TestFragment中Toast代码缺少show()调用,点击事件不会生效,需修正:
binding.tvOne.setOnClickListener {
    Toast.makeText(context, "Button Has Been Clicked! Yipeee!!!!", Toast.LENGTH_LONG).show() // 添加.show()
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 16:23:10