簡體   English   中英

Android ListActivity突然壞了,即使在那里,也找不到android.R.id.list

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM