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


156

다음과 같은 xml 파일을 만들었습니다.

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

그리고 활동 :

public class ExampleActivity extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainlist);
    }
}

보시다시피, 나는 다른 일을 한 적이 없습니다. 하지만 오류가 발생합니다.

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

비록 android:id="@+id/list"내 XML에 줄 이 있지만 .

무엇이 문제입니까?

답변:


345

다음과 같이 ListView의 ID 이름을 바꾸십시오.

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

당신이 사용하고 있기 때문에 ListActivity키워드를 지정해야합니다 XML 파일을 안드로이드 ID로 언급하면서.

ListView확장 대신에 사용자 정의가 필요한 경우 ListActivity단순히 확장 Activity하고 키워드 android 없이 동일한 ID를 가져야합니다 .


4
이렇게하면 내 문제가 해결되었습니다. 감사합니다. 그러나 ListView에 ID "@android : id / list"가 있어야 할 때와 임의의 이름을 갖는 것이 괜찮을 때에 대해 몇 마디 설명 할 수 있을지 궁금합니다. 문제를 해결하고 수정이 필요한 이유를 이해하고 싶기 때문입니다.
RenniePet

4
공장. 그러나 왜 뷰 임프에 따라 ID가있는 '게임'입니까?
ses

1
내가 추가 할 때 @android, Eclipse는 말한다list cannot be resolved or is not a field
user83039

1
같은 문제는 오류를 보여줍니다 : 오류 : 주어진 이름과 일치하는 자원을 찾을 수 없습니다 ( 'id'에서 '@android : id / list_interestsent'값).

1
이 위대한 답변에 감사드립니다!
Brewology

23

mainlist.xml파일에 하나의 목록보기가 있어야합니다.@android:id/list

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

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

이것은 당신의 문제를 해결해야합니다


8

처음에는 작동하지 못했기 때문에 위의 피드백을 기반 으로이 문제를 해결했습니다.

activity_main.xml :

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

MainActivity.java :

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addPreferencesFromResource(R.xml.preferences);

preferences.xml :

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
    android:key="upgradecategory"
    android:title="Upgrade" >
    <Preference
        android:key="download"
        android:title="Get OnCall Pager Pro"
        android:summary="Touch to download the Pro Version!" />
</PreferenceCategory>
</PreferenceScreen>

4

상속 활동 클래스 대신 ListActivity 이 문제를 해결할 수 있습니다.

public class ExampleActivity extends Activity  {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.mainlist);
    }
}

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

0

나에게 영향을 준 또 다른 사항 : 테스트 장치가 여러 개인 경우 장치에서 사용하는 레이아웃을 변경하고 있는지 확인하십시오. 필자의 경우 더 큰 전화 (테스트 도중 중간으로 전환 한)가 "layout-sw360dp"디렉토리의 xml을 사용하고 있음을 알 때까지 "layout"디렉토리에서 xml을 변경하는 데 시간을 보냈습니다. 응!

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