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

Flutter嵌入安卓原生View调用startActivity报Failed to resolve attribute at index 6错误

问题根因

你触发的报错核心原因是点击后启动的AppCompat Activity没有正确加载带AppCompat属性的主题,你给CustomNativeView套的ContextThemeWrapper仅作用于当前平台视图本身,完全不会影响新启动Activity的主题配置,所以你之前给View加主题的操作对Activity无效。


解决步骤

  1. 在AndroidManifest中为目标Activity显式指定AppCompat主题
    直接给你要启动的Activity标签配置你自定义的MainTheme,避免其继承Application级别的缺省主题导致属性缺失:
<activity
    android:name="你要启动的Activity全类名"
    android:theme="@style/MainTheme" />
  1. 修正自定义主题的冗余配置
    AppCompat系列主题的属性不需要重复添加带android:前缀的配置,重复定义反而可能导致属性冲突,修改你的样式如下:
<style name="MainTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:textAppearance">@style/CustomTextAppearance</item>
    <!-- 仅保留不带android前缀的AppCompat属性即可 -->
    <item name="colorPrimary">#d3b170</item>
    <item name="colorPrimaryDark">#d3b170</item>
    <item name="colorAccent">#d3b170</item>
    <item name="android:textColorPrimary">#d3b170</item>
    <item name="android:textColorLink">#d3b170</item>
</style>
<style name="CustomTextAppearance" parent="TextAppearance.AppCompat.Headline">
    <item name="android:textColor">#d3b170</item>
    <!-- 可额外把textColorLink加到TextAppearance里兜底 -->
    <item name="android:textColorLink">#d3b170</item>
</style>
  1. 修正启动Activity的Context来源
    不要用CustomNativeView持有的View上下文启动Activity,优先获取当前Flutter宿主Activity的实例来启动:
    在Flutter插件的原生侧代码中,先通过FlutterPluginBinding获取Activity实例,再调用startActivity,示例逻辑如下:
// 插件初始化时缓存Activity引用
private var activity: Activity? = null
override fun onAttachedToActivity(binding: ActivityPluginBinding) {
    activity = binding.activity
}
// 点击NativeView要启动Activity时调用
view.setOnClickListener {
    activity?.startActivity(Intent(activity, TargetActivity::class.java))
    // 如果你非要用Application上下文启动,必须加NEW_TASK flag,且确保Application也配置了MainTheme
    // context.applicationContext.startActivity(Intent(context, TargetActivity::class.java).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))
}

验证方案

如果修改后仍报错,可先把Activity的主题临时换成系统自带的@style/Theme.AppCompat.Light.NoActionBar,确认原生Activity本身能正常启动后,再逐步自定义主题属性,排查是否是自定义样式的属性冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:09:03