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

Android Button setOnClickListener 報空指針:findViewById 必須在 setContentView 之後調用

     編輯:程式設計綜合問答

在 onCreate 中先 findViewById 再 setContentView,導致按鈕為 null,設置監聽器時拋 NPE。

錯誤順序

Button b1 = findViewById(R.id.web_button); // ❌ 佈局未加載,返回 null
b1.setOnClickListener(...); // NPE
setContentView(R.layout.intent); // 佈局在此後加載

正確順序

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.intent); // ✅ 先加載佈局
    
    Button b1 = findViewById(R.id.web_button); // ✅ 再查找 View
    b1.setOnClickListener(new View.OnClickListener() { // 建議全限定名
        @Override
        public void onClick(View v) {
            // 處理點擊
        }
    });
}

核心規則

  • setContentView 必須在任何 findViewById 之前。
  • findViewById 只能查找當前加載佈局中的 View。
  • 若用 ViewBinding/DataBinding 可完全避免此類錯誤。

調整順序,Button 點擊事件綁定零失誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved