問題タブ [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 - 抽象基本クラスで ViewBinding を使用する方法
ViewBinding を使い始めました。すべての子のレイアウトに存在すると予想されるビューで同じロジックを処理する必要がある抽象基本クラスで ViewBinding を使用する方法の例またはアドバイスを検索した後、この質問をここに投稿することになります。
シナリオ:
基本クラスがありpublic abstract class BaseFragment
ます。この基本クラスを拡張するフラグメントが複数あります。これらのフラグメントには、基本クラスの実装から処理される共通のビューがあります ("old" を使用findViewById()
)。たとえば、すべてのフラグメントのレイアウトには、ID が text_title の TextView が含まれていることが期待されます。からの処理方法は次BaseFragment
のonViewCreated()
とおりです。
ViewBinding-API は、子フラグメントごとにバインディング クラスを生成するようになりました。バインディングを使用してビューを参照できます。しかし、基本クラスの具象バインディングを使用することはできません。基本クラスにジェネリックを導入しても、フラグメント バインディングの種類が多すぎるため、このソリューションは今のところ破棄しました。
抽象基本クラスからバインディングのビューを処理するための推奨される方法は何ですか? ベストプラクティスはありますか? このシナリオをエレガントな方法で処理するための組み込みメカニズムが API に見つかりませんでした。
子フラグメントに共通のビューが含まれていると予想される場合、フラグメントの具体的なバインディングからビューを返し、基本クラスからアクセスできるようにする抽象メソッドを提供できます。(たとえばprotected abstract TextView getTitleView();
)。しかし、これは使用するよりも利点findViewById()
ですか? どう思いますか?他の(より良い)解決策はありますか?議論を始めましょう。