我有AppCompatActivity
这个ViewPager
现在Fragments
AppCompatActivity
toolbar
ProgressBar
我有@Subscribe(threadMode = ThreadMode.MAIN)
public void onShowProgressBar(OnRequestToShowProgressBarEvent onRequestToShowProgressBarEvent) {
progressIndicator.setVisibility(View.VISIBLE);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onHideProgressBar(OnRequestToHideProgressBarEvent onRequestToHideProgressBarEvent) {
progressIndicator.setVisibility(View.INVISIBLE);
}
每个Fragment
片段可以使用以下调用打开/关闭:
ProgressBar
ProgressBar
正在独立完成工作,在完成工作时,他们可以打开ProgressBar
并在完成后将其关闭。
现在我发现这会失败,因为Frag_1可以打开{{1}}而Frag_2可以将其关闭,但Frag_1仍未完成工作且应该启用{{1}}但现在它离开了。
如何解决这个问题?
答案 0 :(得分:0)
回答我自己的问题我认为这可能会奏效,跟进Marconcini的评论我把逻辑放在ProgressBar
这样的地方:
protected ProgressBar progressIndicator;
private final Stack<String> progressBarStack;
@Subscribe(threadMode = ThreadMode.MAIN)
public void onShowProgressBar(OnRequestToShowProgressBarEvent onRequestToShowProgressBarEvent) {
synchronized (progressBarStack) {
progressBarStack.push("show");
progressIndicator.setVisibility(View.VISIBLE);
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onHideProgressBar(OnRequestToHideProgressBarEvent onRequestToHideProgressBarEvent) {
synchronized (progressBarStack) {
progressBarStack.pop();
if (progressBarStack.empty())
progressIndicator.setVisibility(View.INVISIBLE);
}
}
在这里,3名Frags必须承诺在他们致电onHideProgressBar()
onShowProgressBar()
来讨价还价。
这似乎有效,但可能还有一些我想不到的空洞。