在 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。(Context, AttributeSet)。