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

Android ListView.setAdapter 報錯:靜態調用非靜態方法

     編輯:程式設計綜合問答

初學 Android 時最常見的編譯錯誤之一:

cannot make a static reference to the non-static method setAdapter(ListAdapter) from the type ListView

錯誤原因

代碼寫成了 ListView.setAdapter(adapter) —— 用類名調用實例方法。setAdapter 是 ListView 對象的成員方法,必須通過實例化後的對象引用調用。

正確寫法

// 1. 先通過 findViewById 獲取實例
ListView listView = findViewById(R.id.my_list_view);

// 2. 再用對象調用方法
listView.setAdapter(adapter);

核心概念釐清

  • 類方法(靜態方法):屬於類,如 ListView.class、Math.max(),用類名調用。
  • 實例方法:屬於對象,如 listView.setAdapter()、textView.setText(),必須 new 或 findViewById 獲得對象後調用。

避坑清單

  1. 所有 View 操作(setText、setVisibility、setOnClickListener…)都要先 findViewById 拿到實例。
  2. 別把 XML 裡的 android:id="@+id/list" 寫成 @id/list,前者定義新 ID,後者引用現有 ID。
  3. 適配器 adapter 也要先實例化:ArrayAdapter<String> adapter = new ArrayAdapter<>(...)。

記住:「先找到對象,再讓對象幹活」,這個習慣能消除 80% 的初學期 NullPointerException 與靜態調用錯誤。

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