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

Android 自定義 View 建構式不被呼叫的常見原因與解決方法

     編輯:程式設計綜合問答

為什麼有些建構式不會被執行?

Android 自定義 View 通常需要實作三種建構式:

  • View(Context context):以程式碼動態建立 View 時呼叫。
  • View(Context context, AttributeSet attrs):從 XML 配置檔案載入 View 時呼叫。
  • View(Context context, AttributeSet attrs, int defStyleAttr):支援樣式屬性時呼叫。

常見原因

  • 在 XML 中使用自定義 View 時,若沒有呼叫父類別對應建構式,屬性可能無法正確解析。
  • 若以程式碼 new MyView(context) 建立,XML 建構式自然不會被執行,這是正常行為。
  • 未正確傳遞 AttributeSet 會導致自定義屬性無法讀取。

建議做法

public class MyView extends View {
    public MyView(Context context) {
        super(context);
        init(context, null);
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context, attrs);
    }

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context, attrs);
    }

    private void init(Context context, AttributeSet attrs) {
        // 初始化自定義屬性
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved