RuntimeException : 콘텐츠에는 id 속성이 'android.R.id.list'인 ListView가 있어야합니다.


87

런타임 예외가 발생합니다.

java.lang.RuntimeException : 콘텐츠에는 id 속성이 'android.R.id.list'인 ListView가 있어야합니다.

나는 무엇이 잘못되었는지 모른다.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.newslist);
    mDbHelper.open();
    fillData();
}

private void fillData() {
    Bundle extras = getIntent().getExtras();
    long catID = extras.getLong("cat_id");
    Cursor c = mDbHelper.fetchNews(catID);
    startManagingCursor(c);

    String[] from = new String[] { DBHelper.KEY_TITLE };
    int[] to = new int[] { R.id.newslist_text };

    SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.text_newslist, c, from, to);
    setListAdapter(notes);
}

newslist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">
    <ListView 
         android:id="@+id/catnewslist"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
    </ListView>
</LinearLayout>

text_newslist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView 
        android:text="@+id/newslist_text"
        android:id="@+id/newslist_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">    
    </TextView>
</LinearLayout>

15
답을 선택하십시오!

mDbHelper는 무엇입니까? 나는 같은 배를 타고 있고 내 ListView가 작동하도록 노력하고 있습니다 ...
Nick Kahn

답변:


188
<ListView android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

이렇게하면 ListActivity를 계속 사용하려는 경우 오류가 해결됩니다.


48
다른 형식을 사용해야했는데 android:id="@+id/android:list" 작동하지 않으면 시도해보세요 . 클래스는 여전히 ListActivity를 확장해야 ListView yourListView = (ListView)findViewById(R.id.yourListView);하며 초기화 하는 대신이 작업을 수행 해야합니다.ListView yourListView = getListView();
CQM

@CQM 여기 에이 동작에 대한 패턴이 있습니까?
Rui Carneiro

5
OP가 답을 선택하는 데 관심이 있다면 이것이 해결책입니다!
미국

1
왜 이것이 작동합니까? android : id에 다른 값을 할당 할 수없는 이유는 무엇입니까?
Vivek Pandey

1
@VivekPandey, 당신은 안드로이드와 ListView를 필요로하는 ListActivity 확장되기 때문에 : 목록의 ID를 developer.android.com/reference/android/app/ListActivity.html는 , zgcharley 아래 명확하게 설명
mirageservo

52

에 대한 호출을 제거하십시오 setContentView-급진적 인 일을하지 않는 한 ListActivity에서 필요하지 않습니다. 코드는 그것 없이도 작동합니다.


4
하지만 우리가 setContentView ()를 사용하지 않는다면 어떤 템플릿을 적용 할 것인지 Activity는 어떻게 알 수 있습니까?
ses

@ses, 사전 정의 된 ListView 템플릿을 사용할 것이라고 생각합니다.
Craned

26

또 다른 방법은 ListActivity. 그냥 확장 Activity하면으로 목록보기를 만들고으로 목록보기를 setContentView()가져올 수 있습니다 findViewById(R.id.yourlistview).

에서 확장하는 ListActivity경우 setContentView(). 에 의해 목록 활동에서 호스팅되는 기본 목록보기를 가져와야합니다 getListView().


10

받은 오류 메시지와 비슷한 문제가 있었고 Activity 대신 ListActivity를 확장했기 때문에 발견했습니다 (다른 프로젝트에서 코드를 용도 변경하기 위해 얻은 것입니다;))


6
<ListView android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:scrollbars="vertical"/>

3

저도 이런 얼굴을합니다. 클래스에서 (귀하의 경우 다른 사람에게, 단지 주와 아마 관련이없는) 내 경우에는 mainActivity.java yourClassName extends ListActivity(){...}변화에yourClassName extends Activity(){...}


1
나는 이것이 정말 유용하다는 것을 알았습니다. 이것을 공유해 주신 Baras에게 감사드립니다.
Ayoub

다음 맥주는 나에게있어.
Venkata Tata

1

나는 또한이 문제에 직면하여 listactivity에서 내 활동 클래스를 확장했지만 내 목록보기의 ID가 기본이 아니었고 목록으로 다시 변경했으며 이제 정상적으로 작동합니다. 아심 소로 야

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.