問題タブ [android-viewbinding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - ビュー バインディングとライブ データ オブザーバーを使用した Fragment でのクラッシュ
これは私の実装です:
まれに、このクラッシュが発生します。
1 つの考えとして、これは、observe()
サブスクリプションが終了する前にビューが破棄されたときに発生するというものです。
フラグメント コードを調べたところ、FragmentManager で次のことがわかりました。
ビューが破棄された後、viewLifecycleOwner
実際には破棄されます。ただし、この関数は中断できないため、メイン スレッドからインターリーブする方法はありません。
私の仮定は正しいですか?
さらにviewLifecycleOwner
、終了トランジション (FragmentManager#moveToState() Lines 1261+) がある場合、 が長く存続できることがわかりました。
ただし、これはビューの破棄も遅らせます。
クラッシュがどのように発生するかについて何か考えはありますか? sharedViewModel
(これが問題の原因になる可能性がある場合に備えて、サンプルにKoin の注入を残しました。)
android - これらの退屈な findViewById() 呼び出しを回避するにはどうすればよいですか?
2 つの TextView を持つ単純なレイアウト ファイルがあります。
このレイアウトをアプリのいくつかの場所に含めます。私の最後のケースでは、これを 4 回含める必要がありました。含まれている個々のレイアウトでこれら 2 つのテキスト ビューにテキストを見つけて設定するには、1 つのレイアウトの ID を見つけ、そこから 2 つのテキスト ビューの ID を見つける必要があります。含まれているすべてのレイアウトについて、3 回繰り返します。これにより、コードを維持するのが醜く恐ろしいものになります。
どうすればこの怪物を避けることができますか?