界面跳转
更新时间: 2025/09/11 14:15:56
网易云信 IM UIKit 提供统一路由(XKitRouter
),支持参数传递和回调,实现界面的跳转与模块之间的解耦。该路由系统设计灵活,可满足各种复杂场景下的导航需求。
接口介绍
在 IM UIKit 中,您可以通过统一的路由机制实现界面跳转:
- 场景一:在 IM UIKit 内置界面之间跳转
- 场景二:从 IM UIKit 跳转至您应用中的自定义界面
所有界面跳转都可通过调用 navigate
方法实现,方法原型如下:
Java// 带参数的界面跳转
XKitRouter.withKey(path)
.withParam(paramKey, param)
.withContext(context)
.navigate();
// 不带参数的界面跳转
XKitRouter.withKey(path)
.withContext(context)
.navigate();
参数 |
类型 | 说明 |
---|---|---|
|
String |
目标界面的路由地址:
|
paramKey |
String | 传递到目标界面的参数名称。 |
param |
Serializable | 传递到目标界面的参数值,支持基本数据类型、字符串、序列化对象等。 |
context |
Context | Activity 上下文。 |
跳转至内置界面
本节介绍 IM UIKit 内置界面的路由地址列表以及部分界面的跳转示例。
网易云信 IM UIKit 提供两套风格的 UI 组件库,可任意选择一种使用。两种风格 UI 界面的路由地址不同,请按需选择对用风格的对应界面路由地址,实现跳转。
-
路由地址组成:
imkit://{所属模块}/{Endpoint}
-
UIKit 变量所属类:
RouterConstant
每个 UI 服务都注册了两个版本的路由,从而允许应用程序选择偏好的样式。
graph TB
subgraph "通用版 UI 路由"
F1["PATH_FUN_CHAT_P2P_PAGE"]
F2["PATH_FUN_CHAT_TEAM_PAGE"]
F3["PATH_FUN_CONTACT_PAGE"]
F4["PATH_FUN_CONVERSATION_PAGE"]
end
subgraph "基础版 UI 路由"
N1["PATH_CHAT_P2P_PAGE"]
N2["PATH_CHAT_TEAM_PAGE"]
N3["PATH_CONTACT_PAGE"]
N4["PATH_CONVERSATION_PAGE"]
end
subgraph "通用版 Activities"
F1 --> FA1["FunChatP2PActivity"]
F2 --> FA2["FunChatTeamActivity"]
F3 --> FA3["FunContactActivity"]
F4 --> FA4["FunConversationActivity"]
end
subgraph "基础版 Activities"
N1 --> NA1["ChatP2PActivity"]
N2 --> NA2["ChatTeamActivity"]
N3 --> NA3["ContactActivity"]
N4 --> NA4["ConversationActivity"]
end
详细的使用示例如下所示:
基础版 UI 风格
通讯录界面

ContactActivity
contact/contactList.page
需传递目标界面参数:否
使用示例:
// 跳转到通讯录界面
XKitRouter.withKey(RouterConstant.PATH_CONTACT_PAGE).withContext(context).navigate();
通讯录人员选择器

ContactSelectorActivity
contact/selector.page
需传递目标界面参数:否
使用示例:
// 跳转到通讯录人员选择器
XKitRouter.withKey(RouterConstant.PATH_CONTACT_SELECTOR_PAGE)
// 选择列表是需要过滤的账号 ID,可不传,默认不过滤
.withParam(RouterConstant.SELECTOR_CONTACT_FILTER_KEY, accountList)
// 单次选择数量限制,可不传
.withParam(RouterConstant.KEY_CONTACT_SELECTOR_MAX_COUNT, 20)
// 选择数量限制检查,true 如果超过则 Toast 提示,默认 false
.withParam(RouterConstant.KEY_CONTACT_SELECTOR_FINAL_CHECK_COUNT_ENABLE, true)
.withContext(BaseTeamSettingActivity.this)
.navigate(launcher);
单击展开查看如何获取通讯录用户选择结果 Java 示例代码。
// 声明选择结果的 launcher
private ActivityResultLauncher launcher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() != RESULT_OK) {
return;
}
Intent data = result.getData();
if (data == null) {
return;
}
// 选择用户
ArrayList selectedUser =
data.getStringArrayListExtra(REQUEST_CONTACT_SELECTOR_KEY);
});
添加好友界面

AddFriendActivity
contact/addFriend.page
需传递目标界面参数:否
使用示例:
// 跳转到添加好友界面
XKitRouter.withKey(RouterConstant.PATH_ADD_FRIEND_PAGE).withContext(context).navigate();
用户信息界面

UserInfoActivity
contact/userInfo.page
需传递目标界面参数:是
使用示例:
// 跳转到用户信息界面
String accoutId = "user123456"; // 用户 ID
XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
// 选择列表是需要过滤的账号 ID,可不传,默认不过滤
.withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, accoutId).withContext(context).navigate()
黑名单界面

BlackListActivity
contact/blackList.page
需传递目标界面参数:否
使用示例:
// 跳转到黑名单界面
XKitRouter.withKey(RouterConstant.PATH_MY_BLACK_PAGE).withContext(context).navigate();
我的群组界面

TeamListActivity
contact/teamList.page
需传递目标界面参数:否
使用示例:
// 跳转到我的群组界面
XKitRouter.withKey(RouterConstant.PATH_MY_TEAM_PAGE).withContext(context).navigate();
系统通知界面

VerifyListActivity
contact/verifyList.page
需传递目标界面参数:否
使用示例:
// 跳转到系统通知界面
XKitRouter.withKey(RouterConstant.PATH_MY_NOTIFICATION_PAGE).withContext(context).navigate();
单聊界面

ChatP2PActivity
chat/p2pChat.page
需传递目标界面参数:是
使用示例:
// 跳转到单聊界面
String accoutId = "user123456" // 用户 ID
XKitRouter.withKey(RouterConstant.PATH_CHAT_P2P_PAGE).withParam(RouterConstant.CHAT_ID_KRY, accoutId).withContext(context).navigate();
群聊界面

ChatTeamActivity
chat/teamChat.page
需传递目标界面参数:是
使用示例:
// 跳转到群聊界面
String teamId = "team123456" // 群组 ID
XKitRouter.withKey(RouterConstant.PATH_CHAT_TEAM_PAGE).withParam(RouterConstant.CHAT_ID_KRY, teamId).withContext(context).navigate();
聊天内容搜索界面

ChatSearchActivity
chat/searchMessage.page
需传递目标界面参数:是
使用示例:
// 跳转到聊天内容搜索界面
V2NIMTeam team = ... //群信息
XKitRouter.withKey(RouterConstant.PATH_CHAT_SEARCH_PAGE).withParam(RouterConstant.CHAT_KRY, team).withContext(context).navigate();
群设置界面

TeamSettingActivity
team/teamSetting.page
需传递目标界面参数:是
使用示例:
// 跳转到群设置界面
String teamId = "team123456"; // 群组 ID
XKitRouter.withKey(RouterConstant.PATH_TEAM_SETTING_PAGE).withParam(RouterConstant.KEY_TEAM_ID, teamId).withContext(context).navigate();
好友搜索界面

GlobalSearchActivity
search/search.page
需传递目标界面参数:否
使用示例:
// 跳转到好友搜索界面
XKitRouter.withKey(RouterConstant.PATH_GLOBAL_SEARCH_PAGE)
.withContext(context)
.navigate();
会话列表界面

ConversationActivity
conversation/conversation.page
需传递目标界面参数:否
使用示例:
// 跳转到会话列表界面
XKitRouter.withKey(RouterConstant.PATH_CONVERSATION_PAGE).withContext(context).navigate();
通用版 UI 风格
通讯录界面

FunContactActivity
contact/contactList.page
需传递目标界面参数:否
使用示例:
// 跳转到通讯录界面
XKitRouter.withKey(RouterConstant.PATH_FUN_CONTACT_PAGE).withContext(context).navigate();
通讯录人员选择器

FunContactSelectorActivity
contact/selector.page
需传递目标界面参数:否
使用示例:
// 跳转到通讯录人员选择器
XKitRouter.withKey(RouterConstant.PATH_FUN_CONTACT_SELECTOR_PAGE)
// 选择列表是需要过滤的账号 ID,可不传,默认不过滤
.withParam(RouterConstant.SELECTOR_CONTACT_FILTER_KEY, accountList)
// 单次选择数量限制,可不传
.withParam(RouterConstant.KEY_CONTACT_SELECTOR_MAX_COUNT, 20)
// 选择数量限制检查,true 如果超过则 Toast 提示,默认 false
.withParam(RouterConstant.KEY_CONTACT_SELECTOR_FINAL_CHECK_COUNT_ENABLE, true)
.withContext(BaseTeamSettingActivity.this)
.navigate(launcher);
单击展开查看如何获取通讯录用户选择结果 Java 示例代码。
// 声明选择结果的 launcher
private ActivityResultLauncher launcher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() != RESULT_OK) {
return;
}
Intent data = result.getData();
if (data == null) {
return;
}
// 选择用户
ArrayList selectedUser =
data.getStringArrayListExtra(REQUEST_CONTACT_SELECTOR_KEY);
});
添加好友界面

FunAddFriendActivity
contact/addFriend.page
需传递目标界面参数:否
使用示例:
// 跳转到添加好友界面
XKitRouter.withKey(RouterConstant.PATH_FUN_ADD_FRIEND_PAGE).withContext(context).navigate();
用户信息界面

FunUserInfoActivity
contact/userInfo.page
需传递目标界面参数:是
使用示例:
// 跳转到用户信息界面
String accoutId = "user123456"; // 用户 ID
XKitRouter.withKey(RouterConstant.PATH_FUN_USER_INFO_PAGE)
// 选择列表是需要过滤的账号 ID,可不传,默认不过滤
.withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, accoutId).withContext(context).navigate()
黑名单界面

FunBlackListActivity
contact/blackList.page
需传递目标界面参数:否
使用示例:
// 跳转到黑名单界面
XKitRouter.withKey(RouterConstant.PATH_FUN_MY_BLACK_PAGE).withContext(context).navigate();
我的群组界面

FunTeamListActivity
contact/teamList.page
需传递目标界面参数:否
使用示例:
// 跳转到我的群组界面
XKitRouter.withKey(RouterConstant.PATH_FUN_MY_TEAM_PAGE).withContext(context).navigate();
系统通知界面

FunVerifyListActivity
contact/verifyList.page
需传递目标界面参数:否
使用示例:
// 跳转到系统通知界面
XKitRouter.withKey(RouterConstant.PATH_FUN_MY_NOTIFICATION_PAGE).withContext(context).navigate();
单聊界面

FunChatP2PActivity
chat/p2pChat.page
需传递目标界面参数:是
使用示例:
// 跳转到单聊界面
String accoutId = "user123456" // 用户 ID
XKitRouter.withKey(RouterConstant.PATH_FUN_CHAT_P2P_PAGE).withParam(RouterConstant.CHAT_ID_KRY, accoutId).withContext(context).navigate();
群聊界面

FunChatTeamActivity
chat/teamChat.page
需传递目标界面参数:是
使用示例:
// 跳转到群聊界面
String teamId = "team123456" // 群组 ID
XKitRouter.withKey(RouterConstant.PATH_FUN_CHAT_TEAM_PAGE).withParam(RouterConstant.CHAT_ID_KRY, teamId).withContext(context).navigate();
聊天内容搜索界面

FunChatSearchActivity
chat/searchMessage.page
需传递目标界面参数:是
使用示例:
// 跳转到聊天内容搜索界面
V2NIMTeam team = ... //群信息
XKitRouter.withKey(RouterConstant.PATH_FUN_CHAT_SEARCH_PAGE).withParam(RouterConstant.CHAT_KRY, team).withContext(context).navigate();
群设置界面

FunTeamSettingActivity
team/teamSetting.page
需传递目标界面参数:是
使用示例:
// 跳转到群设置界面
String teamId = "team123456"; // 群组 ID
XKitRouter.withKey(RouterConstant.PATH_FUN_TEAM_SETTING_PAGE).withParam(RouterConstant.KEY_TEAM_ID, teamId).withContext(context).navigate();
好友搜索界面

FunSearchActivity
search/search.page
需传递目标界面参数:否
使用示例:
// 跳转到好友搜索界面
XKitRouter.withKey(RouterConstant.PATH_FUN_GLOBAL_SEARCH_PAGE)
.withContext(context)
.navigate();
会话列表界面

FunConversationActivity
conversation/conversation.page
需传递目标界面参数:否
使用示例:
// 跳转到会话列表界面
XKitRouter.withKey(RouterConstant.PATH_FUN_CONVERSATION_PAGE).withContext(context).navigate();
跳转至新增界面
IM UIKit 提供的路由能力,支持根据业务需求新增界面,并实现从 IM UIKit 的内置界面跳转至新增界面。
-
在通过路由实现跳转前,需调用
registerRouter
方法注册该新增界面的路由地址。方法原型如下:
Java
XKitRouter.registerRouter(path, clazz)
参数 类型 说明 path
String 注册界面对应的路由地址。 clazz
Class<? extends Activity> Activity 界面类。 路由的界面注册机制采用覆盖模式,即相同的
Path
,后注册的界面会覆盖之前注册的界面。 -
调用
navigate
方法进行界面跳转,具体参数说明参考上文的 接口介绍。
此文档是否对你有帮助?