我在onCreate中有这个:
mTrueButton = (Button) findViewById(R.id.true_button);
mTrueButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
checkAnswer(true);
}
});
此方法在Android API中定义如下:
public void setOnClickListener(View.OnClickListener l) {
throw new RuntimeException("Stub!");
}
据我所知,我们在这里创建了一个匿名类,以便从View.OnClickListener接口实现onClick()。
但是我很困惑这种方法究竟做了什么;它没有返回任何东西,也没有改变任何东西,只是抛出和异常所以为什么我们在这里呢?
感谢。
答案 0 :(得分:2)
您正在查看的源代码是SDK中的反编译类,因为您没有在项目中设置目标API的来源。
查看实际代码:
以下是我在API 23源代码中可以看到的内容:
/**
* Register a callback to be invoked when this view is clicked. If this view is not
* clickable, it becomes clickable.
*
* @param l The callback that will run
*
* @see #setClickable(boolean)
*/
public void setOnClickListener(@Nullable OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}