0

設定は次のとおりです。ページがあり、ボタンを含むAと呼びます。Bと呼びます。ユーザーがBをクリックすると、ダイアログが開きます(C)。Cは、作成されたAまたはBについて何も知りません。

現在、ユーザーがBをダブルクリックすると、2つ以上のCが作成されますが、これは望ましくありません。CはBについて何も知らないため、ユーザーがCで[キャンセル]を押すとAに戻りますが、Bは引き続き無効になるため、ボタンを無効にすることはできません。また、ページIDを保存して、Cがそのように作成されるのを制限することもできません。これは、ユーザーがCを開き、[キャンセル]をクリックした後、もう一度Cを開くことにした場合、ユーザーはそれを実行できる必要があるためです。

連続して何回クリックしても、ボタンで複数のダイアログを開くことができないようにするにはどうすればよいですか?

編集
上記の説明では単純化しすぎたので、ここでより詳細に見ていきます。私Toolbarのクラスには。というボタンがありますreference。をクリックするreferenceと、完全に別のクラスで関数が呼び出されItemPicker、ダイアログが作成されて表示されますCreateConversation。ですから、私の元のシナリオに戻ると、BはCについて何も知りません。これは複雑であることに気づきますが、現時点では変更できません。

どういうわけか、それが複数回クリックされ、ダイアログがすでに開かれている場合referenceは、2回目の呼び出しを停止する必要があります。また、クラスにはの特定のインスタンスはありません。静的メソッドです。ItemPicker.createAndShow()CreateConversationItemPickerToolbarcreateAndShow()

4

2 に答える 2

1

C は B を知らないが、B は C を知っている: ハンドルを保持して を呼び出すshow()。C が既に表示されている場合はノーオペレーションになり、閉じられている (またはまだ開かれていない) 場合は表示されます。

于 2012-05-26T00:07:50.087 に答える
0

おそらく、A は C への参照を持っています。

C でCancelをクリックすると、 が呼び出されますC.hide()。for Bで、ダイアログの作成、または を使用した同じダイアログの再表示をClickHandlerチェックして有効/無効にすることができます。C.isShowing()C.show()

C で [キャンセル] をクリックすると、呼び出しに加えて、Chide()を再初期化して、次の B クリックまで保持できます。

于 2012-05-25T22:54:53.320 に答える