最近,我开始从零开始计划,我正在学习的教程,我不知道它是如何运作,我找不到任何答案。这就是我苦苦挣扎的代码,但我真的不明白为什么会有beetwen ()方括号一个新的Button.OnClick侦听器,然后OnLongClickListener在这些方法中来自哪里呢?当然,我对对象编程的了解可能比它所要求的要小一些,但我不喜欢学习其他方式,而不是使用它。
Button przycisk = (Button) findViewById(R.id.mojprzycisk);
przycisk.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) { WHERE THIS V IS FROM ?
TextView mojtekst = (TextView) findViewById(R.id.mojtekst);
mojtekst.setText("Good job Boss");
}
}
);
przycisk.setOnLongClickListener(
new Button.OnLongClickListener() {
public boolean onLongClick(View v){ <-----WHERE IS IT FROM?
TextView mojtekst = (TextView) findViewById(R.id.mojtekst);
mojtekst.setText("HOLY CARP THAT WAS A LONG ONE");
return true;}}
);发布于 2016-01-30 20:27:44
您应该查看接口中的java。同样的一个很好的教程也提供给这里。一旦您理解了接口的概念,您就可以看到OnClickListener和OnLongClickListener是接口,它们有像onClick(视图v)和onLongClick(视图v)这样的方法,这些方法是在单击或长时间单击特定视图时调用的。他们返回被点击和持有的视图。
当你说
przycisk.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) { WHERE THIS V IS FROM ?
TextView mojtekst = (TextView) findViewById(R.id.mojtekst);
mojtekst.setText("Good job Boss");
}
}
);您正在创建接口的新实例。为便于阅读,还可以按以下方式编写上述代码。
Button.OnClickListener onClickListener = new Button.OnClickListener() {
@Override
public void onClick(View v) {
TextView mojtekst = (TextView) findViewById(R.id.mojtekst);
mojtekst.setText("Good job Boss");
}
};
przycisk.setOnClickListener(onClickListener);因此,基本上您正在创建接口的一个实例,因为它是一个接口,所以您需要重写方法onClick()并给出它的定义。
简而言之,对于设置onClickListener或onLongClickListener的任何视图,该视图将在onClick(View v)和onLongClick(View v)方法中返回。这个视图将是v。
https://stackoverflow.com/questions/35106620
复制相似问题