我是新手并且在学习,我已经检查了很多相关的帖子但是我的下面几个问题仍未得到解答... [编辑]语言是java ...
以下是处理点击按钮的方法,但任何人都可以解释
3,为什么我不能使用简单的btn.setOnClickListener();为什么我必须在这里打电话给匿名课...下面这行很简单...... !!
btn.setOnClickListener();
为什么再制作两行代码......?即
@override public void onClick (View v) {....}
======================
Button btnCount = (Button) findViewById(R.id.btnCountId);
btnCount.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) { ...... }
});
答案 0 :(得分:0)
当您“设置onClickListener”时,您正在做的是告诉:“单击此按钮时,请执行此代码”。
要执行的代码在提供的匿名函数中实现。
您不能简单地在没有参数的情况下执行btn.setOnClickListener(),因为这不会提供有关单击按钮时要执行的行为的信息。
答案 1 :(得分:0)
您正在使用名为" interface
"。
View.setOnClickListener
接受" OnClickListener
"类型的对象。所以你首先需要创建一个这种类型的对象。
对象OnClickListener
确实是interface
,其中包含一个函数" onClick
",因此要创建该类型的对象,您需要实现它(定义界面中的所有功能) - 在这种情况下,只有一个。
OnClickListener myClickListener=new OnClickListener() {
@Override // override means you are implementing a function in the interface or a derived class
public void OnClick(View v) {
// the button has been pressed
}
};
然后您可以将其分配给视图:
myButton.setOnClickListener(myClickListener);
或许多观点:
myButton1.setOnClickListener(myClickListener);
myButton2.setOnClickListener(myClickListener);
myButton3.setOnClickListener(myClickListener);
在Java中,您会发现对象使用侦听器接口来传递事件。 请注意,更复杂的对象使用的界面可以有多种方法而不只是一种,当您看到的简化不那么方便时。
想象一个对象" Girl
"有方法" flirt
"你可以援她问她吃饭。女孩需要一些时间来决定,然后用相同的界面传达很多可能的答案之一。
OnGirlFlirtListener myGirlFlirtListener=new OnGirlFlirtListener() {
@Override
public void onGirlSaidYes() {
// invite the girl to have dinner
}
@Override
public void onGirlSaidNo() {
// find another girl or hang with your mates instead
}
@Override
public void onGirlSaidMaybe() {
// ask her later
}
@Override
public void onParentsHateMe() {
// forget about that girl
}
}
然后你可以这样做:
mGirl.flirt (myGirlFlirtListener);
代码确实优雅:通过一个界面,您可以控制所有可能的答案!对于java(和Android)中的很多对象来说都是一样的。
当然,如果你不能重复使用它,你可以将它创建为匿名类,而不是将侦听器创建为对象并进行设置。
如何创建通用clicklistener?
有时,在同一个对话框中,您有15个或20个按钮或多或少相同,只是细节不同。虽然你可以完全克制20个clicklisteners,但是利用View.setTag()
功能可以更酷。
setTag
允许您将任意对象存储到任何视图。您可以使用它在clicklistener中区分按下哪个按钮。
所以想象你有5个按钮:Brian,Peter,Loise,Krasty和Sue:
mButtonPeter.setTag("Peter Griffin");
mButtonLouise.setTag("Louise Griffin");
mButtonBrian.setTag("Brian");
mButtonKrasty.setTag("Krasty");
mButtonSue.setTag("Sue");
OnClickListener personClickListener=new OnClickListener() {
@Override
public void OnClick(View buttonPressed) {
String person=(String)(buttonPressed.getTag());
// you pressed button "person"
Toast.makeText(buttonPressed.getContext(), "Hey, "+person+", how is it going!!", Toast.LENGTH_SHORT).show();
}
};
mButtonPeter.setOnClickListener(personClickListener);
mButtonLouise.setOnClickListener(personClickListener);
mButtonBrian.setOnClickListener(personClickListener);
mButtonKrasty.setOnClickListener(personClickListener);
mButtonSue.setOnClickListener(personClickListener);
不是很酷吗?