[英]Logcat error-Content must have a ListView whose id attribute is 'android.R.id.list'
[英]Android: Content must have a ListView whose id attribute is 'android.R.id.list
我已經厭倦了所有可能的在線解決方案(包括 Stackoverflow)來修復此錯誤,但是沒有任何幫助,我們將不勝感激。
java.lang.RuntimeException: 您的內容必須有一個 id 屬性為“android.R.id.list”的 ListView
注意:關於堆棧溢出有很多答案,我已經厭倦了它們。
XML:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Framelayout to display Fragments -->
<FrameLayout
android:id="@+id/frame_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<!-- Listview to display slider menu -->
<ListView
android:id="@android:id/list"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/list_divider"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
android:background="@color/list_background"/>
代碼:
@SuppressLint("NewApi") public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawerList = (ListView) this.findViewById(android.R.id.list);
有誰知道如何解決這個錯誤?
完整的 logcat 報告
09-19 14:53:00.376: E/MainActivity(28935): Error in creating fragment
09-19 14:53:00.387: D/AndroidRuntime(28935): Shutting down VM
09-19 14:53:00.394: E/AndroidRuntime(28935): FATAL EXCEPTION: main
09-19 14:53:00.394: E/AndroidRuntime(28935): Process: info.androidhive.slidingmenu, PID: 28935
09-19 14:53:00.394: E/AndroidRuntime(28935): java.lang.RuntimeException: Unable to start activity ComponentInfo{info.androidhive.slidingmenu/info.androidhive.slidingmenu.MainActivity}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2314)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.app.ActivityThread.access$800(ActivityThread.java:148)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.os.Handler.dispatchMessage(Handler.java:102)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.os.Looper.loop(Looper.java:135)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.app.ActivityThread.main(ActivityThread.java:5312)
09-19 14:53:00.394: E/AndroidRuntime(28935): at java.lang.reflect.Method.invoke(Native Method)
09-19 14:53:00.394: E/AndroidRuntime(28935): at java.lang.reflect.Method.invoke(Method.java:372)
09-19 14:53:00.394: E/AndroidRuntime(28935): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
09-19 14:53:00.394: E/AndroidRuntime(28935): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
09-19 14:53:00.394: E/AndroidRuntime(28935): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.support.v4.app.ListFragment.ensureList(ListFragment.java:344)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.support.v4.app.ListFragment.onViewCreated(ListFragment.java:145)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:941)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:556)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1243)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.app.Activity.performStart(Activity.java:5969)
09-19 14:53:00.394: E/AndroidRuntime(28935): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2277)
09-19 14:53:00.394: E/AndroidRuntime(28935): ... 10 more
不要使用 android.R.id.list 而是使用 R.id.list。
抱歉之前的一半答案,但 @android:id/list 特定於文檔中的 ListActivity 和 ListFragment:
ListActivity 有一個默認布局,它由屏幕中央的單個全屏列表組成。 但是,如果您願意,您可以通過在 onCreate() 中使用 setContentView() 設置您自己的視圖布局來自定義屏幕布局。 為此,您自己的視圖必須包含一個 ID 為“@android:id/list”的 ListView 對象(或者如果它在代碼中,則為列表)
所以要么使用@+id/list 然后使用 R.id.list 或使用 ListActivity 擴展您的活動 通常 +id 用於在 R 中創建新 id 而 android:id 在 xml 中用於自定義我們自己的視圖,如中所述文檔。 因此,我說 @android:id/list 特定於 ListActivity 和 ListFragment。
只需 jusr 從您的 MainActivity setContentView(R.layout.activity_main) 中刪除一行;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.