Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
345 views
in Technique[技术] by (71.8m points)

java - How does the android Xml attribute android:onClick="..." work behind the scenes?

I'm asking this a little because im intrested and mostly because im afraid to use propertiescode that I don't understand. From what I understand all events in java work by implementing a listener inteface thats appropriate to the event. What will happen if I implement onClick in my activity for 2 buttons and for the third define a method with the android:onClick="..." property? I found this article, so after reading it I understand that its probebly implemented using a anonymous class that implements the OnClickListener, but I'd like to be sureknow more about it, and in what way I might break something use this knowledge to my advantege? the android reference isn't clear about how it works,,,

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

It uses reflection to figure out the method to call at runtime. It's a view's property, so the View has the relevant code which looks if this property is set, and then figure out the method name on the activity and triggers it.

View is always bound to a specific activity's context, and so, is able to call this public method through reflection.

You can see the source code of the view class here. You can see line number 2003, where this situation is being handled.

Source code for View class


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...