每個繼承 BaseActivity 的子類都必須在 onCreate 中手動呼叫 initView(),容易忘記且重複。
public abstract class BaseActivity extends AppCompatActivity {
@Override
public void setContentView(@LayoutRes int layoutResID) {
super.setContentView(layoutResID);
initViews(); // 自動觸發
}
protected abstract void initViews(); // 子類實現
protected abstract void setData(); // 可選
}
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // 這裡會自動呼叫 initViews()
setData();
}
@Override
protected void initViews() {
// findViewById 等初始化
}
@Override
protected void setData() {
// 設定資料
}
}