【发布时间】:2017-09-26 14:22:28
【问题描述】:
我在 Android 上遇到了 Snackbars 的一个奇怪问题。我通过 Snackbar + Retry-Action 显示错误消息。当单击“重试”并且错误仍然存在时(例如,没有互联网)我再次显示错误。 单击 Snackbar 中的操作会自动关闭当前显示的 Snackbar,并显示一个新的 Snackbar,而旧的 Snackbar 仍然“淡出”按预期工作。
但有时(当我单击“重试”约 30 次时)在我多次按下按钮后,Snackbar 根本不会出现。
我可以用这个简单的代码重现它:
final View.OnClickListener retryListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
showSnackbar();
}
};
private void showSnackbar() {
Snackbar snackbar = Snackbar.make(root, "Error", BaseTransientBottomBar.LENGTH_INDEFINITE)
.setAction("Retry", retryListener)
//Callback only for debugging-purposes
.addCallback(new BaseTransientBottomBar.BaseCallback<Snackbar>() {
@Override
public void onShown(Snackbar transientBottomBar) {
super.onShown(transientBottomBar);
Log.d(TAG, "onShown called");
}
});
snackbar.show();
Log.d(TAG, "show called");
}
当我在这段代码出现问题后查看 logcat 时,最后一行是 show called 并且不再调用 onShown-callback。
为什么会发生这种情况?我应该将此作为问题报告吗?任何已知的解决方法?
【问题讨论】:
-
你找到解决这个问题了吗?
-
@Taranmeet 我找到了解决方法,请参阅我的答案