uni-app 安卓系统 uts 组件混合开发中添加了res的资源在.kt中使用setContentView(R.layout.activity_pdf_preview)时报错

uni-app 安卓系统 uts 组件混合开发中添加了res的资源在.kt中使用setContentView(R.layout.activity_pdf_preview)时报错

开发环境 版本号 项目创建方式
Mac mac14.5 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:mac14.5

HBuilderX类型:正式

HBuilderX版本号:4.85

手机系统:Android

手机系统版本号:Android 12

手机厂商:小米

手机机型:Mi 10 Lite Zoom

页面类型:vue

vue版本:vue3

打包方式:云端

项目创建方式:HBuilderX

示例代码:
```cpp
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)  

// 隐藏系统默认的ActionBar  
supportActionBar?.hide()  

setContentView(R.layout.activity_pdf_preview)  

// 初始化控件  
viewPager = findViewById(R.id.viewPager)  
btnBack = findViewById(R.id.btnBack)  
tvPageInfo = findViewById(R.id.tvPageInfo)  
btnToggleScroll = findViewById(R.id.btnToggleScroll)  

// 设置返回按钮点击事件  
btnBack.setOnClickListener {  
    // 返回首页  
    val intent = Intent()  
    intent.setAction("android.intent.action.MAIN")  
    intent.addCategory("android.intent.category.LAUNCHER")  
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP)  
    startActivity(intent)  
    finish()  
}  

// 设置滑动模式切换按钮点击事件  
btnToggleScroll.setOnClickListener {  
    isVerticalScroll = !isVerticalScroll  
    updateScrollMode()  
}  

// 设置ViewPager2页面变化监听  
viewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {  
    override fun onPageSelected(position: Int) {  
        updatePageInfo(position)  
    }  
})  

val pdfUrl = intent.getStringExtra("PDF_URL")  
if (pdfUrl != null) {  
    loadPdfFromUrl(pdfUrl)  
} else {  
    finish()  
}  
}

操作步骤:

鸿蒙系统 uts api组件混合开发中,添加了app-android/res/layout/activity_pdf_preview.xml,在PDFPreviewActivity.kt中使用setContentView(R.layout.activity_pdf_preview)时报错:error: resource style/Theme.AppCompat.Light,DarkActionBar

预期结果:

正常运行,能找到资源

实际结果:

报错:error: resource style/Theme.AppCompat.Light,DarkActionBar,未找到资源


更多关于uni-app 安卓系统 uts 组件混合开发中添加了res的资源在.kt中使用setContentView(R.layout.activity_pdf_preview)时报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

贴一下 你的 activity_pdf_prepview.xml , 里面大概率用到了报错的这个主题

更多关于uni-app 安卓系统 uts 组件混合开发中添加了res的资源在.kt中使用setContentView(R.layout.activity_pdf_preview)时报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html


<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">

</RelativeLayout>

感觉就是没有支持这个

uts编译器不支持R.layout,无法加载这个样式

该bug反馈内容基本完整,但存在关键概念混淆。反馈中描述在鸿蒙系统uts组件混合开发中使用setContentView(R.layout.activity_pdf_preview)时报错"resource style/Theme.AppCompat.Light,DarkActionBar未找到",这并非真实bug而是平台兼容性问题。
核心问题在于:用户错误地将Android原生开发模式套用到鸿蒙平台。鸿蒙系统使用ArkUI框架而非Android View体系,不支持Theme.AppCompat等Android特有主题资源。知识库明确说明"鸿蒙平台上不支持app-plus相关内容",且"uniapp-x编译到Harmony时应调用鸿蒙所有api,混合使用ArkTS"。
反馈中代码示例显示用户在.kt文件中使用Android Activity生命周期方法,但uni-app-x的鸿蒙开发应使用uts编写插件并遵循鸿蒙开发规范,不应直接使用Android原生Activity。错误信息表明构建系统无法找到Android资源,恰证明用户错误地将Android资源配置用于鸿蒙平台。
建议用户查阅uni-app-x鸿蒙开发文档,使用鸿蒙推荐的资源引用方式(如getResourceManager())。若需PDF预览功能,应开发符合鸿蒙规范的uts插件,而非移植Android原生代码。当前HBuilderX 4.85版本已支持鸿蒙开发,但必须遵循平台特性。 内容为 AI 生成,仅供参考

安卓系统,不是鸿蒙系统,标题写错了

在 uni-app 的 UTS 混合开发中,使用 setContentView(R.layout.activity_pdf_preview) 报错 resource style/Theme.AppCompat.Light,DarkActionBar,通常是因为缺少对应的 Android 主题依赖或配置问题。

主要原因与解决方案:

  1. 缺少 AppCompat 依赖Theme.AppCompat 是 Android 支持库的主题,需要在 app-android 目录下的 build.gradle 文件中添加依赖。

    • 打开 app-android/build.gradle 文件。
    • dependencies 块中添加:
      implementation 'androidx.appcompat:appcompat:1.6.1'
      
    • 同步 Gradle 配置。
  2. 主题未在清单文件中正确声明:确保 AndroidManifest.xml 文件中为 Activity 指定了正确的主题。

    • 打开 app-android/src/main/AndroidManifest.xml
    • <application><activity> 标签中设置主题:
      <application
          android:theme="@style/Theme.AppCompat.Light.DarkActionBar">
          <!-- 或为特定 Activity 设置 -->
          <activity
              android:name=".PDFPreviewActivity"
              android:theme="@style/Theme.AppCompat.Light.DarkActionBar" />
      </application>
回到顶部