java - 如何将内部函数变成自己的函数?

标签 java android oop onclick onclicklistener

我不知道这些叫什么,但我想改变这样的东西:

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

代码没有像这样“嵌套”在参数中。换句话说,我的想法是:

fab.setOnClickListener(something goes here);

//...and then within its own method somewhere,

public void onClickMethodForOnClickListenerOrSomething(View view) {
    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
    .setAction("Action", null).show();
}

我不知道我是否清楚地表达了自己的意思,但我基本上想将监听器作为参数去掉,并将其放入一个单独的函数中。我发现它使事情变得更清晰,因为有这么多监听器,我的 OnCreate 方法中积累了很多代码。

最佳答案

由于您需要重写 onClick 方法,因此您无法重命名它,但您可以执行以下操作:

public void onClickMethodForOnClickListenerOrSomething(View view) {
    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
    .setAction("Action", null).show();
}

public void yourOtherMethod() {
  fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
          onClickMethodForOnClickListenerOrSomething(view);
        }
    });
}

关于java - 如何将内部函数变成自己的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36482480/

相关文章:

java - Android Java 错误内存不足

android - 从左向右无限时间滑动动画

Android UI 设计模式 - 选项菜单

c# - 'GET OR SET ACCESSOR EXPECTED' 是什么意思?

c++ - 在类 B 中创建类 A 所拥有的对象,其中 B 不知道 A

java - cucumber 场景 : getSourceTagNames() inconsistently returns list in random order

java - Axis Web 服务客户端

java - 如何顺序执行ExecutorService中的任务?

android - 在相对布局中向芯片组添加水平滚动

android - 如何将ListView分成多个部分并加载?