3

私は最初のAndroidアプリケーションを作成していますが、コンテキストオブジェクトの処理に問題があります。多くのメソッド/コンストラクターは現在のコンテキスト(アクティビティ)を必要としているようで、アクションリスナーにいくつかの問題を引き起こします。すべてのリスナーとハンドラーをアクティビティクラスの匿名クラスとして使用する代わりに、処理するイベントごとにクラスを作成しました。たとえば、ボタンbuttonRegisterは次のように初期化されます。

buttonRegister.setOnClickListener(new RegisterButtonClickAction());

ただし、これを行うと、リスナー内の現在のコンテキストオブジェクトにアクセスできなくなります。現在のコンテキストをコンストラクターパラメーターとして渡すことはできますが、これが最良の選択であるかどうかはわかりません。Androidでハンドラー/リスナーを作成したり、一般的にコンテキストオブジェクトを操作したりするための「ベストプラクティス」とは何ですか?

ありがとう、
b3n

4

1 に答える 1

1

ハンドラーのコンストラクターに現在のコンテキストを渡すだけです。

このようなイベント ハンドラーを使用すると、面倒になる可能性があります。ほとんどの場合、ボタンを押すなどのイベントを処理しているときに、Activity 内の他の変数の状態を変更したいとします (一部のデータ構造、TextView などの UI 要素を変更します)。イベント ハンドラー クラスが外部にある場合は、おそらくそのコンストラクターで、変更できるオブジェクトへの参照も提供する必要があります。

私は通常、匿名クラス、または少なくとも内部クラスを使用します。その方がはるかにクリーンでシンプルだと思います。

于 2010-10-15T07:41:54.587 に答える