마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

개발중 오류가 납니다.... (java.lang.NullPointerException)

0 추천

저번에 질문드렸던 한 사람입니다.

개발중 오류가났는데 그때 알려주신 방법으로 다른부분이 오류나서 고쳐보았습니다만, 소용이 없었습니다.

 

에러코드는

12-13 21:10:47.542: E/AndroidRuntime(20197): FATAL EXCEPTION: main
12-13 21:10:47.542: E/AndroidRuntime(20197): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kmcpe.mcpelauncher/com.kmcpe.mcpelauncher.GoApp}: java.lang.NullPointerException
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.app.ActivityThread.access$700(ActivityThread.java:143)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.os.Looper.loop(Looper.java:137)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.app.ActivityThread.main(ActivityThread.java:4950)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at java.lang.reflect.Method.invokeNative(Native Method)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at java.lang.reflect.Method.invoke(Method.java:511)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:997)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at dalvik.system.NativeStart.main(Native Method)
12-13 21:10:47.542: E/AndroidRuntime(20197): Caused by: java.lang.NullPointerException
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.widget.ListView.setAdapter(ListView.java:466)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at com.kmcpe.mcpelauncher.GoApp.onCreate(GoApp.java:73)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.app.Activity.performCreate(Activity.java:5177)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
12-13 21:10:47.542: E/AndroidRuntime(20197):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
12-13 21:10:47.542: E/AndroidRuntime(20197):  ... 11 more

입니다.

에러 가 지목하는 소스는 custom_list.setAdapter(adapter);입니다.

관련 소스는 앞부분

private ArrayList<Apps_List_Data> Array_Data;
 private Apps_List_Data data;
 private Apps_List_Adapter adapter;

 String[] app_c;
 String[] app_n;
 String[] app_m;
 ListView custom_list;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.goapp);
  PackageManager pm = getPackageManager();
  app_c = getResources().getStringArray(R.array.apps_c);
  app_n = getResources().getStringArray(R.array.apps_n);
  app_m = getResources().getStringArray(R.array.apps_m);
  RelativeLayout layout = (RelativeLayout)findViewById(R.id.goapp_layout);
  Drawable d = layout.getBackground();
  d.setAlpha(100);
  layout.setBackgroundDrawable(d);

과,

오류가 지적한 소스가 들어가있는

custom_list = (ListView) findViewById(R.id.apps_listview);
  adapter = new Apps_List_Adapter(this,
    android.R.layout.simple_list_item_1, Array_Data);
  custom_list.setAdapter(adapter);
  custom_list.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    PackageManager pm = getPackageManager();
    try {
     pm.getApplicationInfo(data.getSub_Title().toLowerCase(),PackageManager.GET_META_DATA);
     Intent intent = pm.getLaunchIntentForPackage(getResources().getStringArray(R.array.apps_c)[position]);
     startActivity(intent);

    } catch (NameNotFoundException e) {
     AlertDialog.Builder builder = new AlertDialog.Builder(GoApp.this);
     builder.setTitle("앱이 존재하지 않습니다.");
     builder.setMessage("앱이 존재하지 않습니다.\n일시적인 오류 또는 데이터 오류입니다.");
     builder.setNegativeButton("OK",new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
      }
     });
     builder.show();
    }
   }
  });
  custom_list.setOnItemLongClickListener(new OnItemLongClickListener() {
   public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
    PackageManager pm = getPackageManager();
    try {
     pm.getApplicationInfo(data.getSub_Title().toLowerCase(),PackageManager.GET_META_DATA);
     AlertDialog.Builder builder = new AlertDialog.Builder(GoApp.this);
     builder.setTitle(app_n[position]);
     builder.setMessage("페키치 이름"+app_c[position]+"\n제작자:"+app_m[position]);
     builder.setNegativeButton("OK",new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
      }
     });
     builder.show();
    } catch (NameNotFoundException e) {
     AlertDialog.Builder builder = new AlertDialog.Builder(GoApp.this);
     builder.setTitle("앱이 존재하지 않습니다.");
     builder.setMessage("앱이 존재하지 않습니다.\n일시적인 오류 또는 데이터 오류입니다.");
     builder.setNegativeButton("OK",new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
      }
     });
     builder.show();
    }
    return true;
   }
  });
 }
}

입니다.

java.lang.NullPointerException은 참 오류를 잡아내기 어렵군요;;

빠른 답변은 항상 감사드립니다.

익명사용자 님이 2013년 12월 13일 질문

1개의 답변

0 추천
Array_Data가 Null 값을 가지고 있는 거 아닌가요??

캡쳐 된 화면에는 Array_Data에 data 셋팅 하는 부분이 보이지 않는 것 같은데.
오자르 (140 포인트) 님이 2013년 12월 14일 답변
제가 앱목록있는 앱이 깔려있을시 리스트뷰에 넣을수 있도록 하였는데,
앱이 여러개가 깔려있는데 1개만 뽑혀서 for문에 타이머를 넣었더니,
null이 뜨네요;; 어떻게 해야하죠?
...