首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android BaseActivity 設計模式:在 setContentView 中自動調用初始化方法

     編輯:程式設計綜合問答

問題

每個繼承 BaseActivity 的子類都必須在 onCreate 中手動呼叫 initView(),容易忘記且重複。

解決方案:覆寫 setContentView


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() {
        // 設定資料
    }
}

優點

  • 強制執行初始化,避免遺漏。
  • 減少樣板代碼,子類專注業務邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved