繼承 ListActivity 卻在佈局中使用自定義 ID 的 ListView(如 @+id/listView1),運行時拋出:
java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
public class InstalledApps extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.applist); // 佈局中 ListView id 為 @+id/listView1
listview = (ListView) findViewById(R.id.listView1);
// ...
}
}
public class InstalledApps extends Activity {
// 代碼其餘部分不變
}
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
ListActivity 內部默認查找 android.R.id.list 作為列表視圖,若佈局中無此 ID 會拋出異常。改繼承 Activity 可自由控制 ListView ID,更靈活。
除非佈局中使用系統預設 ID,否則建議繼承 Activity 而非 ListActivity,避免不必要的約束。