传递给OnClickListener()的参数是什么?

时间:2011-02-10 09:57:27

标签: java android

我是C系列背景的java新手。 我无法剖析这段代码。如果只有你能通过识别这个块中的内部类和接口来帮助我:

 
startButton.setOnClickListener(new View.OnClickListener(){
        public void onClick(View view)
        {         
                              
        usrnameobj = (EditText)findViewById(R.id.et_usename);
           usrpassobj = (EditText)findViewById(R.id.et_password); 
        String username = usrnameobj.getText().toString(); 
        String password = usrpassobj.getText().toString(); 
        
        Intent i=new Intent(getApplicationContext(),AndroidXmlResource.class);
        i.putExtra("entry",username.toString() + password.toString());
        startActivityForResult(i,REQ_CODE);
      
        }  
       });

我只能想象:

startButton.setOnClickListener(new View.OnClickListener());

但{}

之间没有任何内容

6 个答案:

答案 0 :(得分:2)

它创建一个实现View.OnClickListener接口的匿名类。当你需要接收和处理View上的点击但是不想为这个简单的过程创建一个正式的类时,你会这样做(你最终会得到很多)。

查看匿名课程的this解释。

答案 1 :(得分:2)

在那里发送的是一个匿名类,您也可以创建一个单独的类来实现OnClickListener并创建该类的实例并将其作为参数发送到setOnClickListener。

“public void onClick(视图视图)”是需要重写的函数,这是在单击setOnClickListener时调用的函数。因此,在这种情况下,它从表单中获取密码和用户名,并启动意图集的活动。

答案 2 :(得分:2)

OnClickListener是在View 中定义的接口。想象一下:

class View
{
    static interface OnClickListener
    {
        public void onClick(View v);
    }
}

{}之间的事情是onClick(View)接口的方法OnClickListener的实现。从new...开始的()之间的东西称为匿名内部类。您可以找到更多说明here

干杯!

答案 3 :(得分:1)

setOnClickListener方法将一个新的View.OnClickListener()实例作为参数,大括号内的内容将覆盖该类的onClick()方法。我认为您可以轻松剖析onClick()方法。

答案 4 :(得分:0)

提到的示例代码包含一个匿名内部类。

这里的用户名和&正在提取密码数据&当用户单击“开始”按钮时,将调用下一个Activity。

请检查以下网址:

<强> http://www.remwebdevelopment.com/dev/a69/Different-Ways-To-Handle-Clicks.html

请回复任何澄清

答案 5 :(得分:0)

你可以做到 任

    btn.setOnClickListener(this);

然后离开onCreate()做

 public void onClick(View v) {
    switch(v.getId()) {

    case R.id.Button:
        //do what you like to do
        break;
    }
 }

 btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub


                            // do what you like to do
        }

 });