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

如何使用Android Snackbar的onDismiss事件?新手技术咨询

解决Snackbar消失后跳转页面的问题

嘿,别担心,这个小问题很容易搞定!你现在的代码是在Snackbar刚调用show()之后立刻启动Activity,所以Snackbar刚弹出来,页面就跳走了,根本来不及看到提示对吧?

要实现Snackbar消失后再执行跳转,关键是利用Snackbar的addCallback()方法监听它的消失事件。具体实现代码如下:

adapterTutorSubject.setOnClickListener(new AdapterTutorSubject.OnClickListener() {
    @Override
    public void onItemClick(View view, TutorSubject obj, int pos) {
        // 先创建Snackbar对象,暂不显示
        Snackbar snackbar = Snackbar.make(parent_view, "Item " + obj.subjectName + " clicked", Snackbar.LENGTH_SHORT);
        
        // 给Snackbar添加消失回调
        snackbar.addCallback(new Snackbar.Callback() {
            @Override
            public void onDismissed(Snackbar snackbar, int event) {
                super.onDismissed(snackbar, event);
                // 当Snackbar消失时,执行跳转逻辑
                // 可选:根据消失原因做判断
                if (event == DISMISS_EVENT_TIMEOUT || event == DISMISS_EVENT_SWIPE) {
                    Intent intent = new Intent(getApplicationContext(), ChapterListActivity.class);
                    startActivity(intent);
                }
            }
        });
        
        // 最后显示Snackbar
        snackbar.show();
    }
});

补充说明:

  • onDismissed方法里的event参数可以帮你区分Snackbar消失的原因,常用的类型有:
    • DISMISS_EVENT_TIMEOUT:超时自动消失
    • DISMISS_EVENT_SWIPE:用户手动滑动消失
    • 如果不需要区分原因,直接在onDismissed里写跳转逻辑即可。
  • 小建议:上下文尽量用当前Activity的实例(比如YourActivity.this)代替getApplicationContext(),能避免一些潜在的Activity启动问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:10:52