Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用全局onCLickListener_Java_Android_Onclicklistener - Fatal编程技术网

Java 使用全局onCLickListener

Java 使用全局onCLickListener,java,android,onclicklistener,Java,Android,Onclicklistener,是否可以使onClickListener应用程序全球化 我基本上有几个片段将使用相同的numpad按钮进行输入,而不是注册和过滤每个片段中每个按钮的点击事件,我想问一下是否可以在整个应用程序中共享onClickListener 这是设置: public class LoginFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container

是否可以使onClickListener应用程序全球化

我基本上有几个片段将使用相同的numpad按钮进行输入,而不是注册和过滤每个片段中每个按钮的点击事件,我想问一下是否可以在整个应用程序中共享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
  }

}

这可能吗?如果是,怎么做?:)如果不是,您对如何以最佳方式实现这一点有何建议?谢谢

是的,正如dymmeh所示。但是正确的方法可能是创建自己的包含所有numpad按钮的视图组件。您需要定义一个布局文件,并创建一个类来扩展某种类型的
ViewGroup
(请参阅)

这个自定义组件将处理其中按钮的onClick事件。然后,如果需要活动和片段对更高级别的事件做出反应,您可以为它们公开某种类型的接口(侦听器)以附加到它们


然后,您只需在所需的任何布局中包含自定义组件,而不是复制粘贴一堆按钮和onClick侦听器附加代码。

button.setOnClickListener(new NumPadListener());啊……我现在觉得自己有点迟钝。我试图将onClickListener设置为与获取button视图相同的步骤,使它告诉我无法将void转换为button(obv…),谢谢^^