我有麻烦了解这段代码.我得到帽子findViewById将获得按钮小部件,然后它会转换它.那么它将使用btn来调用setOnClickListener方法.但是我不知道这个参数是传递给setOnClickListener的,而且我从来没有像以前那样看过这样的代码.它如何创建一个新对象,但是能够在另一个方法的参数中创建一个自己的方法?如果有人能解释的话会很棒.还有什么类型的对象是setOnClickListener方法接收的?
btn = (Button)findViewById(R.id.firstButton); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { tv.setText(months[rand.nextInt(12)]); tv.setTextColor(Color.rgb(rand.nextInt(255)+1,rand.nextInt(255)+1,rand.nextInt(255)+1)); } });
解决方法
它像这样工作. View.OnClickListenere被定义 –
public interface OnClickListener { void onClick(View v); }
据我们所知,您无法实例化对象OnClickListener,因为它没有实现方法.所以有两种方法可以通过 – 你可以实现这个接口,这将重写onClick方法,如下所示:
public class MyListener implements View.OnClickListener { @Override public void onClick (View v) { // your code here; } }
但是,每次您想要设置一个点击监听器时,都很麻烦.所以为了避免这种情况,你可以提供方法的实现,就像你给出的一个例子.
setOnClickListener以View.OnClickListener为参数.