android 把fragment放到activity中,并且接收参数

本文详细介绍了如何将环信的EaseChatFragment集成到自定义的Activity中,包括关键代码示例和XML布局文件,提供了从初始化逻辑到权限请求处理的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是我把环信的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())
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值