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;
  }

(以及与此类似的两个不同片段)

然后的想法是:

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 回答