2012-06-20 4 views
0

아직 실제 데이터가 채워지지 않고 간단한 목록보기를 설정하고 있습니다. 그러나, 테스트를 실행하려고 할 때마다 널 포인터 예외가 발생합니다. 문제의 원인을 파악할 수 없습니다. 오류 로그는 setLayoutParams에 대해 불평합니다. 여기 내 코드는 다음과 같습니다Android ListView Null을 반환 중

public class Groups extends Activity { 

    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.groups_listviews); 

     ListView lView = (ListView)findViewById(R.id.list_view_1); 
     lView.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT, R.layout.groups_listviews_row)); 
     lView.setCacheColorHint(0); 
     lView.setAdapter(null); 
     lView.setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 
      } 
     }); 
    } 

로그 캣 :

06-20 11:03:27.044: D/dalvikvm(3641): GC_EXTERNAL_ALLOC freed 64K, 43% free 3080K/5379K, external 2357K/2773K, paused 81ms 
06-20 11:03:28.388: D/dalvikvm(3641): GC_EXTERNAL_ALLOC freed 6K, 43% free 3096K/5379K, external 4457K/4816K, paused 28ms 
06-20 11:03:28.442: D/AndroidRuntime(3641): Shutting down VM 
06-20 11:03:28.442: W/dalvikvm(3641): threadid=1: thread exiting with uncaught exception (group=0x40018560) 
06-20 11:03:28.442: E/AndroidRuntime(3641): FATAL EXCEPTION: main 
06-20 11:03:28.442: E/AndroidRuntime(3641): java.lang.RuntimeException: Unable to start activity ComponentInfo{com/com.main.Groups}: java.lang.NullPointerException 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.access$1500(ActivityThread.java:124) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.os.Looper.loop(Looper.java:130) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.main(ActivityThread.java:3806) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at java.lang.reflect.Method.invoke(Method.java:507) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at dalvik.system.NativeStart.main(Native Method) 
06-20 11:03:28.442: E/AndroidRuntime(3641): Caused by: java.lang.NullPointerException 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at com.main.Groups.onCreate(Groups.java:23) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  ... 11 more 

답 : 나는 모든 도움을 주셔서 감사를 잘못된 레이아웃 파일 (list_view_1)의 목록보기에 접근했다!

답변

3

오류가 setLayoutParams에 대해 불평하면 일반적으로 null (null) 인 메서드 (별칭 ListView)의 수신기입니다.

ListView lView = (ListView)findViewById(R.id.list_view_1); 

반환 null의 경우

나는 확인합니다.

+0

이것이 null을 반환하는 것처럼 보입니다. list_view_1을 살펴 보겠습니다. – Jamesar

+0

다른 레이아웃 파일의 listview (list_view_1)에 액세스하고있는 것 같습니다. 당신의 도움을 주셔서 감사합니다! – Jamesar

+0

아무 문제 없어, 다행히 도울 수있다;) –

4

nullsetAdapter() 메서드에 전달하면 NullPointerException이됩니다. 이 매개 변수의로

lView.setAdapter(null); 

A는 setAdapter() 유효한 ListAdapter이 필요합니다.

Here's 예.

빈 ListView가 필요한 경우 어댑터를 null로 설정하는 대신 어댑터의 데이터 세트를 비어 있거나 null로 설정하면됩니다.


편집 :

이이 문제의 원인이되지 않을 경우, 다음 NullPointerExceptionListView 될 수 던질 수있는 유일한 다른 구성 요소입니다. 참으로 XML에서 해당 ID로가는 ListView가있는 경우

ListView lView = (ListView)findViewById(R.id.list_view_1); 

확인 확인합니다.

+0

+1. 그냥 이것에 추가하십시오. 빈 ListView가 필요하다면, 어댑터를 null로 설정하는 대신 어댑터의 데이터 세트를 비어 있거나 null로 설정하십시오. – dymmeh

+0

@dymmeh 답변을 편집하고 추가하십시오. :-) –

+0

@ Kazekage Gaara 나는 listView와 setAdapter (null)을 만들었으므로 예외는 발생하지 않는다고 나는 생각하지 않는다. 나는 setAdapter (null)이 문제의 원인이 아니라는 것을 말하는 것만 좋은 것이라고 주장하지 않는다. – Amal

0

나는 오류가 있다고 가정합니다. new FrameLayout.LayoutParams(width, height, gravity)의 매개 변수이며 중력을 지정하는 대신 일종의 레이아웃을 지정합니다.

중력 (예 : Gravity.CENTER)을 지정하기 위해 int를 사용하여 마지막 매개 변수를 변경하면 문제가 해결 될 수 있습니다.

+0

나는 layoutParams를 완전히 제거했다. :) – Jamesar