You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在带展开收起逻辑的可扩展浮动按钮中实现Activity跳转

解决可扩展浮动按钮(Expendable FAB)跳转Activity的问题

问题核心

你之前错误地把跳转逻辑放在了主FAB(addFAB)的点击事件中,还将Intent的目标Activity写成了控件类FloatingActionButton::class.java(这不是你要跳转的业务Activity)。正确的做法是让主FAB只负责展开/收起子按钮,把跳转逻辑放到对应的子浮动按钮点击事件里。

修改后的完整代码

addFAB.setOnClickListener{
    if (!fabVisible){
        uploadfolder.show()
        uploadfile.show()
        createFolder.show()

        uploadfolder.visibility = View.VISIBLE
        uploadfile.visibility = View.VISIBLE
        createFolder.visibility = View.VISIBLE

        addFAB.setImageDrawable(resources.getDrawable(R.drawable.ic_close))

        fabVisible = true
    }else   {
        uploadfolder.hide()
        uploadfile.hide()
        createFolder.hide()

        uploadfolder.visibility = View.GONE
        uploadfile.visibility = View.GONE
        createFolder.visibility = View.GONE

        addFAB.setImageDrawable(resources.getDrawable(R.drawable.add))

        fabVisible = false
    }
}

// 上传文件夹按钮:跳转至对应Activity
uploadfolder.setOnClickListener{
    // 替换成你实际要跳转的Activity类
    val intent = Intent(this@MainActivity, UploadFolderActivity::class.java)
    startActivity(intent)
}

// 上传文件按钮:跳转至对应Activity
uploadfile.setOnClickListener{
    val intent = Intent(this@MainActivity, UploadFileActivity::class.java)
    startActivity(intent)
}

// 创建文件夹按钮:跳转至对应Activity
createFolder.setOnClickListener {
    val intent = Intent(this@MainActivity, CreateFolderActivity::class.java)
    startActivity(intent)
}

关键注意事项

  • 目标Activity类要准确:必须传入你自己定义的业务Activity(比如UploadFileActivity),不能是控件类FloatingActionButton。
  • 上下文要正确:使用this@MainActivity确保获取当前Activity的上下文,避免因上下文错误导致跳转失败。
  • 逻辑职责分离:主FAB只处理展开/收起逻辑,子按钮各自处理对应的跳转或业务操作,避免代码混乱。

内容的提问来源于stack exchange,提问作者En0309O19kl93it

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:30:42