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

ArrayList 오류가 납니다.

0 추천
 TextView text2
 ArrayList<String> fList, fileList;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.magnifymain);
 
     text2 = (TextView) findViewById(R.id.text2);

        
     printFileList();
}

private void printFileList() {
 fList = new ArrayList<String>();
 String path = Environment.getExternalStorageDirectory().toString();
 fList.addAll(getFileList(path));

 for(int i=0;i<fList.size();i++) {
  text2.setText(fList.get(i).toString());
 }
}

private ArrayList<String> getFileList(String folder) {
 
 fileList = new ArrayList<String>();
 File[] files=new File(folder).listFiles();

 for(int i=0;i<files.length;i++)
 {
  if(files[i].isDirectory()){
   fileList.addAll(getFileList(files[i].getPath()));
  }
  else if(files[i].isFile()){
   fileList.add(files[i].getPath());
  }
 }
 return fileList;
 }



04-27 20:55:37.604: E/AndroidRuntime(5510): Process: com.andro, PID: 5510
04-27 20:55:37.604: E/AndroidRuntime(5510): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.andro/com.andro.magnifyActivity}: java.lang.NullPointerException
04-27 20:55:37.604: E/AndroidRuntime(5510):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2413)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at android.app.ActivityThread.access$900(ActivityThread.java:175)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at android.os.Handler.dispatchMessage(Handler.java:102)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at android.os.Looper.loop(Looper.java:146)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at android.app.ActivityThread.main(ActivityThread.java:5602)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at java.lang.reflect.Method.invokeNative(Native Method)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at java.lang.reflect.Method.invoke(Method.java:515)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at dalvik.system.NativeStart.main(Native Method)
04-27 20:55:37.604: E/AndroidRuntime(5510): Caused by: java.lang.NullPointerException
04-27 20:55:37.604: E/AndroidRuntime(5510):  at com.andro.magnifyActivity.getFileList(magnifyActivity.java:166)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at com.andro.magnifyActivity.printFileList(magnifyActivity.java:154)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at com.andro.magnifyActivity.onCreate(magnifyActivity.java:44)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at android.app.Activity.performCreate(Activity.java:5451)
04-27 20:55:37.604: E/AndroidRuntime(5510):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)

 

익명사용자 님이 2015년 4월 27일 질문

2개의 답변

0 추천

getFileList부분에서 오류가 난다고 되어 있고 nullPointerException이 발생하는 것으로 보아, 

folder string 값이 null일 가능성이 높다고 생각됩니다.

 

이 밑에 코드에서, path에 정확히 값이 들어가는지 log로 확인해보세요. 아마 null값이 들어가는 것 같네요.

String path = Environment.getExternalStorageDirectory().toString();
 fList.addAll(getFileList(path));
Djleeee (13,180 포인트) 님이 2015년 4월 28일 답변
예 널값이 들어가네요.. 왜 널값이 들어가는거죠..;;
0 추천
라인이 안보이는데 44번째 줄에 한번보시길..
콜벳 (7,150 포인트) 님이 2015년 4월 28일 답변
printFileList()  이부분인데요 메소드가 정상적으로 호출이 안되나바요
또 파일리스트 자체가 null값을 가지는데 왜그런거죠?
음..저도 어떤걸 하시는건지 정확하게 모르겠지만 해당 폴더에 있는 파일들을 불러오는..? 그런거 같으신데 변수선언한 것들을 함수안에 하지마시고 온크리트 위에 해보시길
예 모든파일 경로를 for문으로 텍스트뷰에 하나씩 뽑는건데요
현재 전역변수인데 변수선언으로 바꾼다고 의미가 있을가요??
한번 해보고 댓글 달겠습니다...
...