请问个按钮事件回调函数的写法

leetow2006 2018-11-10 11:10:25
请看:
public class MainActivity extends Activity implements View.OnClickListener{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button myButton=(Button)findViewById(R.id.myButton);
myButton.setOnClickListener(this);
}
public void onClick(View v)
{
Log.d("TAG","Click Button");
}
}

我根据看书上的,写了简化的代码。
我有两个问题:
1、在myButton.setOnClickListener(this)函数中,this是代表当前的对象,
也就是MainActivity对象。可是setOnClickListener中的自变量是
接口View.OnClickListener的对象,请问:是不是因为当前对象实现了该
接口,所以this中一定包含该接口对象,是不是可以这样理解?
2、如果可以这样理解的话,感觉this的范围太大了,能否直接访问this对象
中的接口对象?
...全文
468 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
徐干稳 2018-11-13
  • 打赏
  • 举报
回复
对于你的第一个的问题,如果你传的是this,那么这个this对象应该实现这个listener(涉及多态),当然this对象的范围就变大了,因为这个this还有其他方法。你的第二个问题来自于第一个问题的思考,你现在想缩小这个范围,那是有解决办法的,根据接口实现来讲(不涉及多态),你只要随便定义一个类来实现这个listener接口,然后传入这个类的对象就行了,这个类既可以是内部类,也可以是外部类。 小伙子可以啊,喜欢思考,加油!
IT_MR_Jie 2018-11-13
  • 打赏
  • 举报
回复
不要把问题想的那么复杂。就好比你(MainActivity)是一个人(Activity),同时你(MainActivity)会Android开发(View.OnClickListener)。这时公司需要一个会Android开发的(不一定需要是Activity)。那么你(MainActivity)也是可以达到公司要求的。会Android开发(View.OnClickListener)表示的是一种功能性。而人(Activity)才是你(MainActivity)的本质。
leetow2006 2018-11-12
  • 打赏
  • 举报
回复
MainActivity派生自类Activity,因此MainActivity是一个Activity。
MainActivity实现了接口View.OnClickListener,因此MainActivity是一个View.OnClickListener。
==========
MainActivity到底是什么?
leetow2006 2018-11-11
  • 打赏
  • 举报
回复
还有人回答吗
tq1086 2018-11-11
  • 打赏
  • 举报
回复
this完全有它表示的类决定。在你的代码里,this表示当前MainActivity对象。MainActivity是什么,this就是什么。
MainActivity派生自类Activity,因此MainActivity是一个Activity。
MainActivity实现了接口View.OnClickListener,因此MainActivity是一个View.OnClickListener。
setOnClickListener要求参数是一个View.OnClickListener,MainActivity是一个View.OnClickListener,this表示当前MainActivity,因此this是View.OnClickListener。
lkj2016 2018-11-10
  • 打赏
  • 举报
回复
继承,多态了解下
class transport{
void show(){
}
}
class car extends transport{
}
int main(){
car car1 = new car();
transport t1= new transport();
car1.show();
t1.show();
}

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧