0

onClickListenerアプリをグローバルにすることは可能ですか?

基本的に、入力に同じテンキーボタンを使用するいくつかのフラグメントがあり、各フラグメントの各ボタンのクリックイベントを登録およびフィルタリングする代わりに、アプリ全体でonClickListenerを共有できるかどうかを尋ねたいと思いました。

これが設定です:

public class LoginFragment extends Fragment {

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle states) {
    this.context = getActivity();

    // TODO: Register onClickListener...somehow

    context.registerReceiver(receiver, filter); //For the intent listening
    view = inflater.inflate(R.layout.layout_login_screen, container, false);
    buildUI(null);
    return view;
  }

(そしてこれに似た2つの異なるフラグメント)

そしてアイデアは次のとおりでした:

public class NumPadListener implements OnClickListener {

  @Override
  public void onClick(View v) {
    System.out.println("Yup...I'm listening?");

    // TODO: Do funny intent stuff here
  }

}

これも可能ですか?はいの場合、どのように?:)そうでない場合、これを最善の方法で実装する方法について何か推奨事項はありますか?ありがとう

4

1 に答える 1

0

はい、dymmehが示したように。しかし、適切な方法は、おそらくすべてのテンキーボタンを含む独自のビューコンポーネントを作成することです。レイアウトファイルを定義し、ある種の拡張を行うクラスを作成する必要がありますViewGroup複合コントロールを参照)。

このカスタムコンポーネントは、その中のボタンのonClickイベントを処理します。次に、より高いレベルのイベントに反応する必要がある場合に、アクティビティとフラグメントをアタッチするためのある種のインターフェース(リスナー)を公開できます。

次に、一連のボタンとonClickリスナー接続コードをコピーして貼り付ける代わりに、必要なレイアウトにカスタムコンポーネントを含めるだけです。

于 2013-02-14T22:36:57.957 に答える