10

UI イベントのすべてのバインディング コードを OnCreate() に配置しました。それは私の OnCreate() を巨大にしました。

Android で UI イベントを実装する際のパターンはありますか? View xml ファイルにメソッドを追加して、すべてのハンドラー コードを別の場所に配置できますか。

一言で言えば、AndroidアプリコードでMVVMパターンを実装する方法を尋ねていると思いますか?

4

4 に答える 4

5

私がすること:

  1. すべての onClick 関数を XML に保持します。Java コードの乱雑さを大幅に回避します。
  2. イベント リスナーを関数内に保持するのではなく、アクティビティ クラスのメンバーとして初期化します。コードに中括弧が多すぎるのは好きではありません。私を混乱させます。
  3. リスト アダプターが大きくなりすぎた場合は、それらをアクティビティ クラスのメンバーとしてではなく別のクラスに保持し、すべてのビュー リスナーをアダプターに保持します。
  4. あまりにも多くの onClick 関数を作成しないようにするために、onNavigatonClickのような関数を 1 つだけにしておいてから、view.getId ()を使用してどのボタンがクリックされたかを確認します。XML は有効な関数呼び出しがチェックされないため、関数名が間違っていると実行時エラーが発生します。
  5. 特定のビューに多くの UI 対話コードが必要な場合は、GestureDetector を使用してカスタム ビューを作成し、UI 対話を処理します。

私はまだJavaの経験があまりないので、これはまだかなり基本的なことだと思います。

于 2011-05-01T21:27:50.440 に答える
5

1.6 以降では、レイアウト XML ファイルでonClick メソッドを指定して、脂肪を少し減らすことができます。私は通常、onCreate メソッドを呼び出す initUi() メソッドですべてを非表示にします。このようにして、少なくとも onCreate は読みやすくなります。

于 2011-05-01T21:15:30.200 に答える
1

これにはすでに多くの良い答えがあります。:)

Android 1.6 以降を使用している場合、新しいフラグメントAPI は、アクティビティを整理して複数の論理ユニットに分割するのに役立つ場合があります。

于 2011-05-01T21:58:05.527 に答える
0

onCreate は通常、setContentView を呼び出してリスナーをセットアップするのに最適な場所ですが、ユーザー インタラクションを処理するコードは、通常、onClick、onTouch、onKey などのルーチンに入ります。

コードを投稿していただければ、あなたが何をしたかを確認できるのではないでしょうか?

于 2011-05-01T21:16:43.983 に答える