2011-05-05 8 views
1

청취자를 정리하려고하는데 뭔가 잘못되었습니다. LogCat에서 일반적인 NullPoinerException이 발생합니다 (처음 이런 식으로 처리하려고 시도하는 경우).OnClickListener NullPoinerException 오류?

어떤 도움이 필요합니까? Thnx!

활동 :

public class List_RegulatoryDocs extends Activity { 

OnClickListener myClickListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (v == acItem) { 
      Intent ACList = new Intent(List_RegulatoryDocs.this, 
        List_AC.class); 
      startActivity(ACList); 
     } else if (v == adItem) { 
      // TODO 
     }else if (v == cfrItem) { 
      // TODO 
     }//TODO + items 
    } 
}; 

/** 
* -- Called when the activity is first created 
* =================================================================== 
*/ 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.regulatory_docs_list); 

    // Set the Click Listeners 
    acItem.setOnClickListener(myClickListener); 
    adItem.setOnClickListener(myClickListener); 
    cfrItem.setOnClickListener(myClickListener); 

} 

/** 
* -- Local Variables 
* ===================================================================== 
**/ 
RelativeLayout acItem = (RelativeLayout) findViewById(R.id.acItem); 
RelativeLayout adItem = (RelativeLayout) findViewById(R.id.adItem); 
RelativeLayout cfrItem = (RelativeLayout) findViewById(R.id.cfrItem); 
// RelativeLayout pmaItem = (RelativeLayout) findViewById(R.id.pmaItem); 
// RelativeLayout saibItem = (RelativeLayout) findViewById(R.id.saibItem); 
// RelativeLayout sfarItem = (RelativeLayout) findViewById(R.id.sfarItem); 
// RelativeLayout stcItem = (RelativeLayout) findViewById(R.id.stcItem); 
// RelativeLayout tsoItem = (RelativeLayout) findViewById(R.id.tsoItem); 
// RelativeLayout tcdsItem = (RelativeLayout) findViewById(R.id.tcdsItem); 
} 

로그 캣 :

05-05 01:27:29.931: WARN/dalvikvm(13268): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268): FATAL EXCEPTION: main 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.aeroTechnologies.flyDroid/com.aeroTechnologies.flyDroid.regList.List_RegulatoryDocs}: java.lang.NullPointerException 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.os.Looper.loop(Looper.java:123) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at dalvik.system.NativeStart.main(Native Method) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268): Caused by: java.lang.NullPointerException 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.app.Activity.findViewById(Activity.java:1637) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at com.aeroTechnologies.flyDroid.regList.List_RegulatoryDocs.<init>(List_RegulatoryDocs.java:51) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at java.lang.Class.newInstanceImpl(Native Method) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at java.lang.Class.newInstance(Class.java:1429) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
05-05 01:27:29.971: ERROR/AndroidRuntime(13268):  ... 11 more 
+0

음, 전형적인 NPE? (팁 : LogCat 게시) – kcoppock

+0

@kcoppock 안녕하세요, LogCat을 추가했습니다. – CelticParser

+1

jk와 Ted가 꽤 있습니다. onCreate 내 또는 다른보기의 컨텍스트 내에서 할당을 수행해야합니다. RelativeLayouts를 할당하려고 할 때 NPE가 발생하고 있습니다. – kcoppock

답변

3

acItem, adItem, cfrItem (원하는 경우 멤버 변수로)을 선언하십시오. 다음 onCreate()에서 할당하십시오.

public class List_RegulatoryDocs extends Activity { 
RelativeLayout acItem ; 
RelativeLayout adItem; 
RelativeLayout cfrItem ; 
OnClickListener myClickListener = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     if (v == acItem) { 
      Intent ACList = new Intent(List_RegulatoryDocs.this, 
        List_AC.class); 
      startActivity(ACList); 
     } else if (v == adItem) { 
      // TODO 
     }else if (v == cfrItem) { 
      // TODO 
     }//TODO + items 
    } 
}; 

/** 
* -- Called when the activity is first created 
* =================================================================== 
*/ 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.regulatory_docs_list); 
acItem = (RelativeLayout) findViewById(R.id.acItem); 
adItem = (RelativeLayout) findViewById(R.id.adItem); 
cfrItem = (RelativeLayout) findViewById(R.id.cfrItem); 
    // Set the Click Listeners 
    acItem.setOnClickListener(myClickListener); 
    adItem.setOnClickListener(myClickListener); 
    cfrItem.setOnClickListener(myClickListener); 

} 

/** 
* -- Local Variables 
* ===================================================================== 
**/ 

// RelativeLayout pmaItem = (RelativeLayout) findViewById(R.id.pmaItem); 
// RelativeLayout saibItem = (RelativeLayout) findViewById(R.id.saibItem); 
// RelativeLayout sfarItem = (RelativeLayout) findViewById(R.id.sfarItem); 
// RelativeLayout stcItem = (RelativeLayout) findViewById(R.id.stcItem); 
// RelativeLayout tsoItem = (RelativeLayout) findViewById(R.id.tsoItem); 
// RelativeLayout tcdsItem = (RelativeLayout) findViewById(R.id.tcdsItem); 
} 
+0

Thnx! 도움이되었고 새로운 것을 배웠습니다. – CelticParser

2

onCreate에서, 당신은 그것들을 초기화하지 않고 acItem, adItemcfrItem에 접근 할 것으로 보인다.

관련 문제