ライブデータを使用してメッセージでアラートを表示します。私が持っている問題は、アクティビティが再開されるたびにアラートが再びポップアップすることです。何かヒント?ライブデータを使用すると、ダイアログを1回だけ表示する方法はありますか?
1
A
答えて
0
トリガーされるカスタムライブイベントは、1回のみ使用できます。この議論はすでにAndroid's Architecture Google Samples Repositoryで行われています。ここにはproposed solutionが好きです。あなたはkotlinでそれを必要とする場合には
、そこにそれが行く:
class SingleLiveEvent<T>: MutableLiveData<T>() {
private val pending = AtomicBoolean(false)
@MainThread
override fun observe(owner: LifecycleOwner, observer: Observer<T>) {
if (hasActiveObservers()) {
Log.w(TAG, "Multiple observers registered but only one will be notified of changes.")
}
// Observe the internal MutableLiveData
super.observe(owner, Observer<T> { t ->
if (pending.compareAndSet(true, false)) {
observer.onChanged(t)
}
})
}
@MainThread
override fun setValue(@Nullable t: T?) {
pending.set(true)
super.setValue(t)
}
/**
* Used for cases where T is Void, to make calls cleaner.
*/
@MainThread
fun call() {
value = null
}
companion object {
private val TAG = "SingleLiveEvent"
}
}
を再度yourLiveData.value = newValue
を呼び出さない限り、それは二度あなたのダイアログをトリガしません。これを使用します。
希望します。あなたはダイアログがtrueに設定すると、共有設定に保存し表示すると
0
はboolean isShown = false;
を設定します。 isShownはfalseです。
関連する問題
- 1. Knockoutを使用して列の値を1回だけ表示する方法はありますか?
- 2. jQuery uiダイアログには1回だけ表示されます
- 3. ウィンドウを1回だけ表示する方法は?
- 4. スライドインバナーを1回だけ表示する
- 5. sendMessageにクロムエクステンションを1回だけ取得する方法はありますか?
- 6. ORMLite LazyForeignCollection:コレクションを1回だけクエリする方法はありますか?
- 7. nodejsでJSファイルを1回だけ "require"する方法はありますか?
- 8. ローカル通知を1回だけ発信する方法はありますか?
- 9. タグで1回だけ交換する方法とタグを付けない方法はありますか?
- 10. 繰り返し値を1回だけ表示し、繰り返す場合は ' - 'を表示する方法
- 11. Firebase:RecyclerViewを使用するユーザーごとに1回だけ表示する
- 12. Jqueryはデータを1回だけループするか、データを1回だけ表示します
- 13. 複数のパラメータを渡す方法はありますが、uiRouterを使用して1つだけを表示する方法はありますか?
- 14. コンポーネントinitでinterval2を使用してインターバルを1回だけ実行する方法はありますか?
- 15. アプリを使用して一度だけビューを表示する方法はありますか?
- 16. 通知ポップアップをAngular.jsで1回だけ表示するには?
- 17. 1つのアイテムをforeachループ内に1回だけスポーンする方法はありますか?
- 18. ResourceDictionのXAML Canvasを1回だけ表示できますか?
- 19. 最初の起動時にUIPageViewControllerを1回だけ表示する方法
- 20. ボタンを1回クリックするだけで別のタブをジャンプさせる方法はありますか?
- 21. JFreeChartを使用して線でプロットするデータセットを1つだけにする方法はありますか?
- 22. 関数を1回だけ呼び出す場合は、 'use'を使用する必要がありますか?
- 23. TestInitialize&TestCleanupをC#で1回だけ実行する例はありますか?
- 24. 認証の間だけSSLを使用する方法はありますか?
- 25. foreachループでタイトルを1回だけ表示する
- 26. 同じクラスをjqueryで1回だけ表示する
- 27. より多くのstartActivityコールがあると、ダイアログのアクティビティは1回だけ開始されます
- 28. SwiftにUIImageを作成してアニメーションを1回だけ作成する方法はありますか?
- 29. Redis DBインデックスを1つだけダンプする方法はありますか?
- 30. jquery:javascriptダイアログボックスは1回だけ表示されます
ありがとう、私はそれを試してみます。 –
魅力的な作品です。どうもありがとうございました! –
@Natan共有参照リンクまたはチュートリアルリンクしてください.. – Omi