[英]Android ListActivity suddenly broke, can't find android.R.id.list even though its there
我意識到許多問題浮在水上,但我從未發現任何人遇到我的確切問題。
據我所知,我做對了,它昨天起作用了。 今天,我正在研究應用程序的其他部分,並想對其進行測試。 現在,我收到了這個令人討厭的錯誤,它找不到ID為android.R.id.list的列表,但是同樣,它似乎在那里。
對應用程序其他部分的任何更改是否可能導致了這種情況,在這種情況下,是什么原因? 誰能看到錯誤,因為我確定看不到。
我有點絕望,因為這是一個學校項目,很快就要到期了。 預先感謝大家的寶貴時間!
(在MainActivity.java中)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
(activity_main.xml)
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
LOGCAT
根據要求:
01-13 19:00:48.852: W/dalvikvm(25254): threadid=1: thread exiting with uncaught exception (group=0x40e6da08)
01-13 19:00:48.857: E/AndroidRuntime(25254): FATAL EXCEPTION: main
01-13 19:00:48.857: E/AndroidRuntime(25254): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.ajhansen.meetme/org.ajhansen.meetme.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2463)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.access$600(ActivityThread.java:162)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.os.Looper.loop(Looper.java:158)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.main(ActivityThread.java:5751)
01-13 19:00:48.857: E/AndroidRuntime(25254): at java.lang.reflect.Method.invokeNative(Native Method)
01-13 19:00:48.857: E/AndroidRuntime(25254): at java.lang.reflect.Method.invoke(Method.java:511)
01-13 19:00:48.857: E/AndroidRuntime(25254): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
01-13 19:00:48.857: E/AndroidRuntime(25254): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
01-13 19:00:48.857: E/AndroidRuntime(25254): at dalvik.system.NativeStart.main(Native Method)
01-13 19:00:48.857: E/AndroidRuntime(25254): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ListActivity.onContentChanged(ListActivity.java:243)
01-13 19:00:48.857: E/AndroidRuntime(25254): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:345)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.Activity.setContentView(Activity.java:1929)
01-13 19:00:48.857: E/AndroidRuntime(25254): at org.ajhansen.meetme.MainActivity.onCreate(MainActivity.java:72)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.Activity.performCreate(Activity.java:5165)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1103)
01-13 19:00:48.857: E/AndroidRuntime(25254): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419)
01-13 19:00:48.857: E/AndroidRuntime(25254):
...另外11個
很多人會因R文件無法正確生成等錯誤而產生錯誤,通常我嘗試像別人建議的那樣執行Clean操作。 如果這樣不起作用,請遍歷所有xml文件並對其進行精梳,從而導致丟失<或>的任何小錯誤,可能會導致R文件損壞。 如果失敗,請刪除正在運行的項目,但將文件保留在磁盤上,然后從現有代碼創建一個新項目(假設您使用的是eclipse)並找到項目文件夾的路徑。 確保您選中復制到工作區,這通常可以解決我的問題。
您發布的代碼似乎沒有任何問題。 工作正常。 但是,我可以通過更改activity_main.xml
的內容來重現與您相同的錯誤,方法是用不同的東西(除了@android:id/list
作為其ID的ListView以外)進行更改。 因此,我猜想在setContentView
期間無法以某種方式獲取正確的布局文件。 為了檢查布局文件的內容,您可以嘗試用此代碼替換onCreate
代碼,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
XmlPullParser xpp = getResources().getLayout(R.layout.activity_main);
int eventType;
try {
eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
Log.d("DEBUG_TAG", "Start tag " + xpp.getName());
}
eventType = xpp.next();
}
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setContentView(R.layout.activity_main);
}
用您選擇的標記替換“ DEBUG_TAG”,以在LogCat中查看輸出。 如果獲取正確的布局,則應該在LogCat中獲得類似於以下內容的信息。
01-14 00:43:00.671:D / DEBUG_TAG(29931):開始標記ListView
嘗試
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
像這樣校准列表視圖
ListView mlist = (ListView)findViewById(R.id.list);
然后清理您的項目並檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.