22

私は Google の Android チュートリアルに従っていますが、タイトルごとにウィジェットのコールバックを取得する方法が 2 つあることを発見しました (または onClick のみ - わかりません)。

私はシニア Java Swing 開発者なので、内部クラスのアプローチはくつろげます :) しかし、xml アプローチの方が新しいことは理解しています。そのため、Google は何らかの理由でそれを追加したに違いありません。

ここでの理由は何ですか?Androidプラットフォームでこのようにするのは「より良い」ですか?(それをサポートするバージョンでは)内部クラスのアプローチを避けるべきですか?

4

4 に答える 4

20

私は XMLonClick属性を使用していませんActivity。これは、XML を拡張している が onClick 値メソッドを実装する必要があることを意味するためです。ただし、リファクタリングを行ってこのメソッドを変更すると、変更が XML に関連付けられていないと、実行時例外が発生します。includeまたは、またはいくつかを使用したい場合merge

さらに追加するには: フラグメントを使用する場合、 XML 属性を定義したフラグメントにクリック イベントを委譲する必要があります。onClick

確かにコードは少ないですが、そのようなコードを維持/リファクタリングするために、物事が難しくなり、エラーが発生しやすくなります。したがって、本番コードでは使用しないでください。

于 2013-08-16T06:54:52.677 に答える
0

ボタンのようなウィジェットは、xml とプログラムの両方で定義できます。Can は、両方の方法でリスナーを追加する機能を提供しています。したがって、一方が他方に勝るという利点はありません。

xml からレイアウト固有の作業を行いたい場合、Android はそれを行う機能を提供しています。

しかし、誰かがプログラム的にレイアウトを定義してから、コードからクリック リスナーを定義する必要があります。

しかし、それを混ぜて使う人もいます。

私の言いたいことを理解していただければ幸いです。

プログラムで行う場合は、 onClick() と書くだけで、スイッチ ケースを記述し、ビュー ID に基づいて、私が個人的に操作しやすいと感じる動作を定義できます。

于 2013-08-16T06:54:46.460 に答える
0

ボタンが常にそこにあり、同じアクションが常に実行される場合、宣言型イベント ハンドラーを使用することは理にかなっています。findViewById()そのボタンを実行する必要さえない場合のように。

クリックを有効/無効にしたり、ボタンを動的に生成したりする場合などは、コードで動的にイベント ハンドラーを設定するのが理にかなっています。

于 2013-08-16T06:55:40.393 に答える