Android Kotlin开发如何实现从BottomSheet跳转至其他Activity
实现方法
你只需要从已经加载的BottomSheet布局实例中找到对应按钮,设置点击事件后执行跳转逻辑即可,修改后的完整代码如下:
class NewSignUpActivity : AppCompatActivity() { private lateinit var btnBottomSheet: RelativeLayout override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_rider_or_bike) btnBottomSheet = findViewById(R.id.riderBtn) val bottomSheetCallback = object : BottomSheetBehavior.BottomSheetCallback(){ override fun onStateChanged(bottomSheet: View, newState: Int) {} override fun onSlide(bottomSheet: View, slideOffset: Float) {} } val bottomSheetView = layoutInflater.inflate(R.layout.layout_bottom_sheet, null) val bottomSheetDialog = BottomSheetDialog(this) bottomSheetDialog.setContentView(bottomSheetView) val bottomSheetBehavior = BottomSheetBehavior.from(bottomSheetView.parent as View) bottomSheetBehavior.setBottomSheetCallback(bottomSheetCallback) // 从BottomSheet布局中查找YES按钮 val yesBtn = bottomSheetView.findViewById<AppCompatButton>(R.id.yellowBtn) // 设置YES按钮点击事件 yesBtn.setOnClickListener { // 先关闭弹窗 bottomSheetDialog.dismiss() // 执行页面跳转,将TargetActivity替换为你实际要跳转的目标Activity类名即可 val jumpIntent = Intent(this@NewSignUpActivity, TargetActivity::class.java) // 如果需要传参可以调用 jumpIntent.putExtra("参数名", 参数值) startActivity(jumpIntent) } // 补充NO按钮的关闭逻辑,不需要可以删除 val noBtn = bottomSheetView.findViewById<AppCompatButton>(R.id.noBtn) noBtn.setOnClickListener { bottomSheetDialog.dismiss() } // 补充右上角关闭按钮逻辑,需要先给布局里的关闭ImageView加id android:id="@+id/closeIv" // val closeIv = bottomSheetView.findViewById<AppCompatImageView>(R.id.closeIv) // closeIv.setOnClickListener { // bottomSheetDialog.dismiss() // } btnBottomSheet.setOnClickListener { bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED bottomSheetDialog.show() } } }
注意事项:
- 目标Activity需要提前在
AndroidManifest.xml中注册,否则会触发跳转报错- 布局中的关闭ImageView默认没有设置id,需要使用关闭功能的话先在XML里给该控件添加id属性
内容的提问来源于stack exchange,提问作者Lovely Joy Figueras
相关产品推荐
相关产品推荐

