【问题标题】:setOnClickListener AndroidsetOnClickListener Android
【发布时间】:2013-02-08 07:17:26
【问题描述】:
Button b1 = (Button) findViewById(R.id.button1);

OnClickListener list1 = new OnClickListener() {
    @Override
    public void onClick(View v) {
        startActivity(new Intent(MainActivity.this, Second.class));
    }
};

b1.setOnClickListener(list1);

为什么我们不需要实例化或初始化传递给 onClick 的 View v?它指的是什么对象?

【问题讨论】:

    标签: java android mobile methods


    【解决方案1】:

    如果你按下按钮,View v 实际上就是Button b1

    如果按下按钮,View v 将返回 Object Button b1

    【讨论】:

    • 但是我们为什么不通过按钮 b1 呢?
    • @naxchange - 不是你,明确地将 View 传递给 onClick() 方法。它由您绑定到按钮的监听器完成,以防发生任何 onClick 事件触发。
    【解决方案2】:

    android 将每个元素(即文本字段、按钮等)视为视图。此处 View v 将返回您单击的按钮的对象,即按钮 b1。

    【讨论】:

      【解决方案3】:

      b1.setOnClickListener(list1); - 您的这段代码将list1 侦听器绑定到您的按钮b1 的onClick 事件。

      只要有点击 - 在这种情况下 - 触摸,按钮 b1 上的 onClick() 方法将被调用,该方法将发送触发它的视图的 handle(v)(在您的情况下 - 按钮 b1)。

      因此,View v 将是您触发OnClickListener 的视图的句柄。

      【讨论】:

        【解决方案4】:

        测试以下..

        protected void onCreate(Bundle savedInstanceState) 
        {
             Button b1 = (Button) findViewById(R.id.button1);
            b1.setOnClickListerner(this);
            .....
            .....
        }
        
        public void onClick(View v)
        {
             if(v == b1)
            {
                // do stuff
            }
        }
        

        上面的代码和你的代码都是一样的。当你按下按钮时,按钮对象的引用被传递给 onClick()。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-04-23
          • 1970-01-01
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多