我是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());
但{}
之间没有任何内容答案 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
}
});