当前位置: 首页 > 面试题库 >

声明一个类实现OnClickListener与自己声明它?

林炫明
2023-03-14
问题内容

对我的头衔表示歉意,我无法正确表达问题。

我已经看到OnCLickListener有两种实现方式。首先通过表示您的类已实现来完成OnCLickListener。第二个任务是让您自己声明完成任务。

为什么在第一种选择中,您可以简单地将其this作为setOnCLickListener参数,而在第二种选择中,则必须麻烦OnClickListener自己创建对象?

首先:

public class WidgetConfig extends Activity implements OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.widgetconfig);
    Button b = (Button)findViewById(R.id.bwidgetconfig);
    b.setOnClickListener(this);
    }
    //onClick defined outside of the onCreate
    @Override
    public void onClick(View arg0) {
    // TODO Auto-generated method stub

    }

第二:

public class WidgetConfig extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.widgetconfig);
    Button b = (Button)findViewById(R.id.bwidgetconfig);
    b.setOnClickListener(bListener);
}



private Button bListener = new OnClickListener(){

b.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {

            //TO-DO

            }
});

问题答案:

在第一种方法中, 整个Activity类都
实现了该OnClickListener接口。您可以将OnClickListener每个View的设置 为此
,并通过一种方法接收所有click事件,然后可以在其中过滤它们并对其进行操作。

第二种方法使用实现接口方法 的匿名内部类 。通过使用这种方法,您只会收到该特定视图的事件。

在第一种方法中,您的整个类都使用的一个实例,该实例OnClickListener传递给您要监听点击的所有View。

第二种方法转换为:

Button.OnClickListener anonymous_listener = new Button.OnClickListener() { ... };
button.setOnClickListener(anonymous_listener);

也就是说,OnClickListener当您使用它时,它会动态创建并存储一个新实例。



 类似资料:
  • 问题内容: 在什么情况下可能会得出与之不同的结果? 我认为这可能与外部类的子类实例化一个未声明为静态的内部类有关,但我无法以这种方式获得区别: 输出: 问题答案: 在此处找到http://kickjava.com/1139.htm#ixzz1mv2nEWg7: “具有getDeclaringClass的替代项是,在Java语言规范中,匿名内部类不计为类的成员,而命名内部类为。因此,此方法为匿名类返

  • 下面会对C语言、着色器语言ES GLSL、javascript语言和TypeScript语言声明变量的方式进行简单展示,这样可以更方便不同基础读者类比学习。 C语言 着色器语言ES GLSL和C语言有很多相似之处,如果你有一定的C语言基础,对于学习着色器语言也是有一定的帮助的。 // C语言声明一个整形变量并赋值10 int count = 10; // 改变变量值,重新赋值 count=20;

  • 2.2. 声明 声明语句定义了程序的各种实体对象以及部分或全部的属性。Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。这一章我们重点讨论变量和类型的声明,第三章将讨论常量的声明,第五章将讨论函数的声明。 一个Go语言编写的程序对应一个或多个以.go为文件后缀名的源文件中。每个源文件以包的声明语句开始,说明该源文件是属于哪个包。

  • 本页包含内容: 模块范围 代码块 引入声明 常量声明 变量声明 类型的别名声明 函数声明 枚举声明 结构体声明 类声明 协议声明 构造器声明 析构声明 扩展声明 下标脚本声明 运算符声明 声明修饰符 一条声明可以在你的程序里引入新的名字和构造。举例来说,你可以使用声明来引入函数和方法,变量和常量,或者来定义 新的命名好的枚举,结构,类和协议类型。你也可以使用一条声明来延长一个已经存在的命名好的类型

  • 这里需要说明一下,笔者不建议在Windows环境下进行深度学习的研究,一方面是因为Windows所对应的框架搭建的依赖过多,社区设定不完全;另一方面,Linux系统下对显卡支持、内存释放以及存储空间调整等硬件功能支持较好。如果您对Linux环境感到陌生,并且大多数开发环境在Windows下更方便操作的话,希望这篇文章对您会有帮助。 关于计算机的硬件配置说明 推荐配置 如果您是高校学生或者高级研究人

  • 本教程不得用于任何形式的商业用途,如果需要转载请与作者SCP-173联系,如果发现未经允许复制转载,将保留追求其法律责任的权利。 关于计算机的硬件配置说明 推荐配置 如果您是高校学生或者高级研究人员,并且实验室或者个人资金充沛,建议您采用如下配置: 主板:X99型号或Z170型号 CPU:i7-5830K或i7-6700K 及其以上高级型号 内存:品牌内存,总容量32G以上,根据主板组成4通道或8