下面是我把环信的EaseChatFragment放在activity的代码,BaseActivity2是我自己封装的基类,集成你自己的基类一样的。关键代码就三行,在代码中标注了。
关键代码:
var chatFragment = ChatFragment()
chatFragment?.arguments = intent.extras
supportFragmentManager.beginTransaction().add(R.id.container, chatFragment!!).commit()
em_activity_chat.xml布局代码:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/container"
>
</FrameLayout>
class ChatActivity : BaseActivity2() {
var activityInstance: ChatActivity? = null
private var chatFragment: EaseChatFragment? = null
internal var toChatUsername: String? = null
internal var group_name_show: String? = null
internal var user_name: String? = null
internal var photo_path: String? = null
override val layoutRes: Int
//这个页面的布局
get() = R.layout.em_activity_chat
override fun initLogic() {
EventBusUtils.register(this)
activityInstance = this
toChatUsername = intent.extras!!.getString("userId")
//关键代码就这三行,其他的都是我项目的逻辑
chatFragment = ChatFragment()
chatFragment?.arguments = intent.extras
supportFragmentManager.beginTransaction().add(R.id.container, chatFragment!!).commit()
}
override fun setListener() {
}
override fun processLogic() {
}
override fun onDestroy() {
super.onDestroy()
EventBusUtils.unregister(this)
activityInstance = null
}
override fun onNewIntent(intent: Intent) {
val username = intent.getStringExtra("userId")
if (toChatUsername == username)
super.onNewIntent(intent)
else {
finish()
startActivity(intent)
}
}
override fun onBackPressed() {
chatFragment?.onBackPressed()
}
fun getToChatUsername(): String? {
return toChatUsername
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
PermissionsManager.getInstance().notifyPermissionsChange(permissions, grantResults)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
1 -> {
if (resultCode == Activity.RESULT_OK) {
finish()
} else if (resultCode == 11) {
if (data != null) {
chatFragment?.setGroup(data.getStringExtra("group_name"))
}
}
}
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
fun onReceiveEvent(event: EventBusUtils.EventMessage<*>) {
when (event.code) {
EVENT_GROUP_DETAIL -> {
startActivityForResult<GroupDetailActivity>(1, "groupId" to event.data.toString())
}
}
}
}