**编辑:**
我问这的主要原因是下面的代码,它实现了OnClickListener ,但是没有设置 new OnClickListener ,而是仅将上下文作为参数传递给OnClickListener
public class MainActivity extends Activity implements View.OnClickListener {
ImageSwitcher imageSwitcher;
Button btnPrevios, btnNext;
int[] LOGO = { R.drawable.barca, R.drawable.psg, };
int currentIndex = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnPrevios = //.......; btnNext = //.....;
btnPrevios.setOnClickListener(this);
btnPrevios.setOnClickListener(this);
imageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
//.......
});
}
public void onClick(View view) {
switch (view.getId()){
case R.id.btnNext:
if(currentIndex<LOGO.length-1){
currentIndex = currentIndex+1;
imageSwitcher.setBackgroundResource(LOGO[currentIndex]);
}
break;
}
}
但是Xml仍然需要如下所示的onClick
<Button
android:id="@+id/btnPrevious"
android:onClick="onClick" />
<Button
android:id="@+id/btnNext"
android:onClick="onClick"
/>
**请在上述情况下实现OnClickListener的目的是什么
编辑:从这些评论中,我意识到您可能都不了解我的问题。
根据Mark
If you've implemented and set the OnClickListener in code, you do not need the android:onClick attribute in the layout XML
但是到目前为止,我所看到的代码实现了 界面OnClickListener并完成
button.setOnClickListener(this);
但是他们都没有使用
setOnClickListener(new onClickListener);
如 Pirho 所述。
他们做到了
Public void onClick(View v){
//sth
}
**与我的方法相比,这可能使重言式更加混乱或更加复杂。
似乎我缺少了一些东西**
Xml onClick如何在代码中工作,或者我缺少什么?我确实写了这样的onClick方法
Public void onClick(View v){
//sth
}
在扩展Activity类之后无需实现Interface View.OnClickListener,并且效果很好。
但是最近我看到了类似的东西
public class MainActivity extends Activity implements View.OnClickListener{
//.......
button.setOnClickListener(this);
}
Public void onClick(View v){
//sth
}
请,实现界面View.OnClickListener 的目的是什么,因为我仍然必须像在XML中一样始终声明 onClick =“ onClick” 。>