Android:内容必须有一个ListView,其id属性为'android.R.id.list

时间:2015-09-19 13:36:11

标签: java android listview android-fragments android-activity

我已经厌倦了在线的所有可能的解决方案(包括Stackoverflow)来修复此错误,但是没有任何效果可以帮助我们。

错误是什么?

java.lang.RuntimeException:您的内容必须有一个ListView,其id属性为'android.R.id.list'

注意:堆栈溢出有很多答案,我已经厌倦了。

我的代码中有什么?

XML:

[ReturnStatement]

代码:

<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"/>

任何人都知道如何解决此错误?

完整的logcat报告

 @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);

2 个答案:

答案 0 :(得分:-1)

不要使用android.R.id.list而是使用R.id.list 很抱歉上一半的答案,但@android:id / list特定于文档中的ListActivity和ListFragment:

  

ListActivity的默认布局由单个布局组成,   屏幕中央的全屏列表。但是,如果你愿意,   您可以通过设置自己的视图布局来自定义屏幕布局   在onCreate()中使用setContentView()。要做到这一点,你自己的观点必须   包含一个ID为#34; @android:id / list&#34;的ListView对象; (或列出如果   它在代码中)

所以要么使用@ + id / list然后使用R.id.list,要么使用ListActivity扩展Activity 通常,+ id用于在R中创建新的id,而android:id在xml中用于使用我们自己的视图进行自定义,如文档中所述。 因此我说@android:id / list特定于ListActivity和ListFragment。

答案 1 :(得分:-1)

只需jusr从MainActivity中删除一行 setContentView(R.layout.activity_main);