Activity1 繼承 Activity2,導致 Activity2 布局中的 Button 點擊無響應。去掉 Activity1 的 onClick() 後恢復正常,說明方法覆蓋衝突導致父類邏輯被阻斷。
Android 中 Activity 繼承鏈遵循標準 Java 多態:
Activity2 定義 onClick(View v) 處理按鈕點擊。Activity1 重寫(Override)了同名方法,但未調用 super.onClick(v),導致父類邏輯完全被覆蓋,按鈕點擊事件無人處理。public class Activity1 extends Activity2 {
@Override
public void onClick(View v) {
// 1. 先處理子類特有邏輯
if (v.getId() == R.id.btn_child) { ... }
// 2. 必須調用父類方法,保證父類按鈕邏輯生效
super.onClick(v);
}
}
View.OnClickListener 匿名類/lambda 綁定具體 View,解耦邏輯。BaseActivity 或 Fragment,通過委託復用,而非強行繼承具體業務 Activity。