在 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 點擊事件綁定零失誤。