SuperAPI AI 工具集

cometchat-android-v6-kotlin-placement

编程与开发

查看项目

更新于 10-16 12:57

技能介绍

用途

本技能用于将 CometChat Android UIKit v6 的 Kotlin Views 组件放入 Android 界面容器中,解决界面放置与导航相关的实现问题。所谓“放置”,指的是把 CometChat 提供的 Kotlin Views 组件嵌入到 Activity、Fragment、BottomSheet、Tab 布局或 Dialog 中,并处理这些界面之间的跳转。技能中的模式来自 CometChat 的 sample-app-kotlin 示例应用。

事实基础为 com.cometchat:chatuikit-kotlin-android:6.x 与官方文档(https://www.cometchat.com/docs/ui-kit/android/v6/overview)。技能建议在依赖具体符号前,先对照已安装的包或源码进行校验。配套技能包括 Compose 放置(cometchat-android-v6-compose-placement)、Kotlin 组件(cometchat-android-v6-kotlin-components)与主题定制(cometchat-android-v6-kotlin-theming)。

适用与不适用

适用场景:向 Activity 或 Fragment 添加 CometChat Views;在聊天界面之间建立基于 Intent 的导航;构建包含 Conversations、Users、Groups、Calls 标签的 Tab 布局;在 BottomSheet 或 Dialog 中展示 CometChat 组件。

不适用场景:使用 Compose 进行放置时,应改用 Compose 放置技能;查询组件 API 时,应改用 Kotlin 组件技能。

主要放置方式

Activity 放置:示例展示 ConversationsActivity 在 onCreate 中构造 CometChatConversations 实例,通过 setOnItemClick 回调,用 Intent 跳转到 MessagesActivity。MessagesActivity 的示例加载布局后,通过 ViewCompat.setOnApplyWindowInsetsListener 为根视图处理系统栏内边距,然后取出 CometChatMessageHeader、CometChatMessageList、CometChatMessageComposer,设置返回按钮可见并绑定返回回调,最后对三者分别调用 setUser 或 setGroup。示例 XML 布局根部使用 fitsSystemWindows="true" 与 ?attr/cometchatBackgroundColor1。

Fragment 放置:在 onCreateView 中构造 CometChatConversations,返回该组件实例作为视图,并在点击回调中通过 FragmentManager 或 Navigation Component 导航。

Tab 布局:使用 TabLayout 与 ViewPager2,通过 FragmentStateAdapter 提供 Conversations、Users、Groups、CallLogs 四个 Fragment,再用 TabLayoutMediator 设置标签文本。

BottomSheet 放置:使用 CometChatMessageInformationBottomSheet.newInstance(message) 并通过 show 展示;自定义 BottomSheet 可在 onCreateView 中返回 CometChatReactionList 组件并调用 setBaseMessage。

Dialog 放置:CometChatFlagMessageDialog 是普通 Android Dialog,而非 DialogFragment。消息在构造时传入,没有 setMessage 设置方法,也没有 show(fm, tag) 重载,使用时以 (context, BaseMessage) 构造后调用 show()。

导航与流程模式

技能给出单 Activity 承载聊天流的模式:在 Activity 中通过 supportFragmentManager 的 Fragment 事务,将容器内容替换为 ConversationsFragment,并在 navigateToMessages 中替换为 MessagesFragment 并加入返回栈。

硬性规则

必须先在消息组件上调用 setUser() 或 setGroup(),再显示该组件。Activity 主题必须继承 CometChatTheme.DayNight、CometChatTheme.Light 或 CometChatTheme.Dark,技能说明不能用 Theme.AppCompat.、Theme.MaterialComponents..Bridge、不带 kit 的 Theme.MaterialComponents.、Theme.Material3. 或 android:Theme.Material.* 作为父主题,否则会在组件膨胀时崩溃;CometChatTheme.DayNight 自身继承 Theme.MaterialComponents.DayNight.NoActionBar。正在进行中的通话必须通过 com.cometchat.uikit.kotlin.presentation.ongoingcall.ui 中的 CometChatOngoingCallActivity.launchOngoingCallActivity 启动,以便管理生命周期与画中画;CometChatCallActivity 位于 com.cometchat.uikit.kotlin.calls,负责去电、来电、会议界面的启动,没有 launchOngoingCallActivity 方法。在 Activity 之间传递 User/Group 时,应序列化 UID/GUID 并重新获取,或使用共享缓存,不要把完整 SDK 对象放入 Intent extras。应使用 AppCompatActivity 而非普通 Activity,以确保主题属性正确解析。

限制

资料未提供该技能的收费、价格、平台兼容范围或使用效果等信息,暂未提供。