2013-12-11 14 views
0

특정 작업을 시작하려고 할 때 throw되는 특정 NullPointerException의 원인을 찾기 위해 고심하고 있습니다.ListView를 사용할 때 NullPointerException이 발생했습니다.

로그 캣 출력 :

12-11 13:29:28.211: E/AndroidRuntime(701): Caused by: java.lang.NullPointerException 
12-11 13:29:28.211: E/AndroidRuntime(701): at android.content.res.AssetManager.getResourceTextArray(AssetManager.java:214) 
12-11 13:29:28.211: E/AndroidRuntime(701): at android.content.res.Resources.getTextArray(Resources.java:361) 
12-11 13:29:28.211: E/AndroidRuntime(701): at android.content.res.TypedArray.getTextArray(TypedArray.java:628) 
12-11 13:29:28.211: E/AndroidRuntime(701): at android.widget.ListView.<init>(ListView.java:168) 
12-11 13:29:28.211: E/AndroidRuntime(701): at android.widget.ListView.<init>(ListView.java:159) 
12-11 13:29:28.211: E/AndroidRuntime(701): ... 25 more 

에서 onCreate() 문제의 활동의 방법

내 활동이 부하를 시도하는 레이아웃 "디스플레이"에 대한
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.display); 
} 

XML :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:baselineAligned="false" > 

    <ListView 
     android:id="@+id/weekdayListView" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" > 

    </ListView> 

    <ListView 
     android:id="@+id/timeSlotListView" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="3" 
     android:entries="@layout/item_layout" > 

    </ListView> 

</LinearLayout> 

내 활동은 onCreate()에있는 것 이외에 다른 작업을 수행하지 않습니다. listviews를 채울 수있는 코드가 없으므로 (문제의 근원을 찾기 위해 주석을 달았습니다.) 활동이 시작될 때 빈 화면이어야합니다.

weekdayListView과 관련된 XML 파일의 섹션을 주석 처리하면 활동이 잘로드되므로 XML 설정 방법에 문제가 있다고 가정해야합니다. 두 가지 사이에서 볼 수있는 유일한 차이점은 내가 명시 적으로 android:entries 특성을 설정하지 않는다는 것입니다. 그러나 올바르게 이해하면이 경우 기본값을 사용해야합니다.

저는 잠시 동안 여기에 갇혀 있었으므로 어떤 도움을 주셔서 감사합니다. 내가 생각했던 것만 큼 많은 정보를 제공하려고했지만, 내가 포함시켜 놓은 것을 잊어 버렸다면 알려줘.

+0

당신은 당신의 활동의 나머지 코드를하시기 바랍니다 제공 할 수 있습니다. 그것은 listactivity를 확장합니까? – HpTerm

+0

언제 제대로 작동합니까?'weekdayListView' 또는'timeSlotListView'에 댓글을 달 때? – Apoorv

+0

@HpTerm : 위에 나열된 onCreate() 메소드 외에도'public class Display extends Activity {}', 패키지 이름 및 현재 사용되지 않은 가져 오기가 있습니다. @Apoorv :'weekdayListView'를 주석 처리하면 정상적으로 작동하며, 활동을 시작할 때 빈'timeSlotListView'가 표시됩니다. – MisterM2402

답변

3

android : entries 속성은 문자열 배열 리소스를 가리켜 야 할 때 레이아웃을 가리 킵니다.

strings.xml에 문자열 배열을 만듭니다.

<string-array name="vals"> 
    <item>Foo</item> 
    <item>Bar</item> 
</string-array> 

후 사용이

android:entries="@string/vals" 
+0

그 목록보기의 각 행에 대해 사용자 정의 레이아웃을 사용하고 싶었 기 때문에 레이아웃을 가리 킵니다. timeSlotListView 만 사용할 때 (즉, 다른 사용자를 주석으로 처리 할 때) 제대로 작동합니다. – MisterM2402

+0

@ MisterM2402'android : entries'는 사전 정의 된 문자열 배열을 제공합니다. 사용자 정의 레이아웃을 제공하려면 어댑터 클래스를 대체해야합니다. – waqaslam

+0

죄송합니다.'timeSlotListView'를 주석 처리하면 정상적으로 동작한다는 것을 알았습니다. 데이터베이스에서 목록보기를 채우는 방법에 대한 지침은 SimpleCursorAdapter (사용자 지정 레이아웃이 목록보기에 사용 되었음에도 불구하고) 만 사용했으나 지금 다시 확인해 보겠습니다. android : entries' 속성은 어디에서 왔는지 모르겠습니다. – MisterM2402

관련 문제