1

私は Android が初めてで、一般的にイベント駆動型のコードです。onClick イベントなどを処理するためにアクティビティに大量の匿名イベント リスナー クラスを埋め込むのではなく、別のクラスを定義してコードをクリーンに保ちます。次に、たとえばこのように使用します

myButton.setOnClickListener(new MyEventListener());

したがって、「myButton」がクリックされると、MyEventListener の onClick メソッドが何らかの処理を行います。

ベストプラクティスを知りたい

a) イベント リスナーからアクティビティ内のものにアクセスする。たとえば、ラベルのテキストを変更します。onClick イベントはビューを受け取りますが、これはクリックされたボタンのビューであるため、ラベルがボタンの子でない場合、findViewById を使用してハンドルを取得することはできません。コンストラクターを変更して、ラベルへの参照を渡すようにしました。これにより、イベントはそれに対するハンドルを持ちますが、これが最もエレガントな方法であるかどうかはわかりません。

b) イベントが発生したときなどに情報を返す場合、一部の EditText フィールドを無効にしたい場合があります。これを行う適切な方法は、おそらく、アクティビティがリッスンするイベントリスナーから別のイベントをディスパッチすることであり、イベントを確認すると、問題のフィールドを無効にすることだと考えています。それはAndroidでそれを行う方法ですか?

誰かが助けてくれることを願っています、本当に感謝しています。

ありがとう

4

1 に答える 1

2

匿名かどうかにかかわらず、明示的なイベント リスナーを使用する代わりに、次の例のように、xml でonClick属性を使用してメソッドに直接ディスパッチする方法があります。

レイアウト xml ファイル:

 <Button android:onClick="buttonClickedCallback" />

アクティビティのメソッドを簡単に定義します。

class CustomActivity extends Activity {
    public void buttonClickedCallback(View clickedButton) {
        // do stuff
    }
}

これは、Android 1.6 でのUI フレームワークの変更 で説明されているように、Android 1.6 以降で使用できます。

于 2010-11-06T23:21:47.750 に答える