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

Android 自訂 View 呼叫方法空指針:確保 findViewById 在 setContentView 之後執行

     編輯:程式設計綜合問答

在 Activity.onCreate 中,必須先呼叫 setContentView 再執行 findViewById,否則取得的自訂 View 為 null,呼叫其方法會拋出 NullPointerException。

正確順序

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); // 先膨脹佈局

    DrawView drawView = findViewById(R.id.my_view); // 再取得實例
    drawView.setUserData(true); // 安全呼叫
}

替代方案:程式碼動態添加

LinearLayout container = findViewById(R.id.container);
DrawView drawView = new DrawView(this);
drawView.setUserData(false);
container.addView(drawView);

常見錯誤

  • 在 setContentView 前呼叫 findViewById。
  • XML 中自訂 View 類別名稱錯誤(套件名不全)。
  • 自訂 View 建構子未實作 (Context, AttributeSet)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved