我想在点心栏onDismissed完成之后开始一个过程。
if (snackbar != null){
snackbar.dismiss();
finish();
} else {
finish();
}
由于快餐栏onDismissed是异步的,因此活动将在onDismissed任务完成之前完成。
snackbar.addCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
if (event != DISMISS_EVENT_ACTION) {
// Some work to be done.
}
我意识到我可以在onDismissed中调用finish(),但是还有其他一些动作可以导致小吃店关闭,并且我不希望他们完成活动。 在继续执行代码之前,是否有一种等待小吃栏过程完成的方法?
答案 0 :(得分:0)
查看Snackbar的Android文档。您可以使用DISMISS_EVENT_MANUAL表示从dismiss()调用中取消了小吃店。
snackbar.addCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
if (event == DISMISS_EVENT_MANUAL) {
// Some work to be done.
activity.finish()
}
}
另一个选择是扩展Snackbar.Callback()。像
class MyCallback extends Snackbar.Callback {
Runnable run;
@Override
public void onDismissed(...) {
// Do something
if (run) run.run();
}
}
BaseCallback<Snackbar> callback = new MyCallback();
snackbar.addCallback(callback);
然后在您要完成解雇时执行此操作。
if (snackbar != null){
callback.run = new Runnable() {
void run() {
finish();
}
};
snackbar.dismiss();
} else {
finish();
}