正在阻止片段上的UI交互



我希望能够阻止与片段的所有UI交互,直到发生回调。

我有两个按钮:按钮A和按钮B。

ButtonA显示了一个进度条,并启动了一个异步线程,该线程在完成后调用回片段。在此期间,有人可以按下按钮B,但我不想允许。

我的解决方案是旋转另一个片段,它是透明的,可以拦截所有点击。然而,在FragmentManagers commit()和片段实际工作之间似乎存在延迟
我尝试过调用executePendingTransactions(),但最终还是遇到了线程问题,即在用户点击ButtonB之前,片段不处于接受onClick事件的状态。

有没有更优雅的解决方案?

谢谢,

John

另一个选项是使用进度对话框片段并将其设置为不可取消。它将覆盖片段并防止底层片段接收任何触摸事件。

您可以在当前视图上方拥有另一个带有进度对话框的transparent视图,而不是调用另一个片段,并相应地使其可见性为view或GONE。否则,u可以简单地显示一个可取消参数为false的进程对话框。

调用按钮B.setEnabled(false);单击按钮A之后。

CustomButton extends View {
     private boolean mIsEnabled = true;
     public void setEnabled (boolean enabled) {
        this.mIsEnabled = enabled;
     }

     @Override
     public void onClick() {
          if (mIsEnabled) {
               mOnClickListener.onClick();
          } else {
              return;
          }
     }

}

我没有完全理解这个问题。。希望它能帮助你。当你在上面添加transprent片段时,使透明布局可点击=真正的

如果一个视图被提及为可点击,它不会将触摸事件传递给下面的视图。

对不起,如果我把你的问题理解错了。

按钮A不能将其包含的活动置于给定状态(在其侦听器中引发布尔标志),而按钮B不能在做任何事情之前读取该标志吗?

我认为这不仅仅是一个UI问题,还应该实现一些表示逻辑和迷你状态机。这个机制加上您已经拥有的片段应该足以防止UI线程事件执行序列中出现间隙。

相关内容

  • 没有找到相关文章

最新更新