如何使用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
相关产品推荐
相关产品推荐

