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

오류 해결 좀 부탁드립니다...

0 추천

 TextView text2
    ArrayList<String> fList= new ArrayList<String>();
 ArrayList<String> fileList = new ArrayList<String>();
 String path = Environment.getExternalStorageDirectory().getAbsolutePath();
 
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.magnifymain);
 
     
     text2 = (TextView) findViewById(R.id.text2);

        }
 


    

 

private void printFileList() {

Log.d("magnifyActivity", "폴더명-->" + path); 
fList.addAll(getFileList(path));

 
new Thread() {
 @Override
 public void run() {
  Log.e("path", ""+fList.size());
  for(int i=0;i<fList.size();i++) {
   Log.e("path", ""+fList.get(i));
   text2.setText(fList.get(i).toString());
 try {
  Thread.sleep(500);
 } catch (Exception e) {
  e.printStackTrace();
 }
 runOnUiThread(new Runnable() {
  @Override
  public void run() {
    text2.setText(fList.toString());
  }
 });
}
}
}.start();
}
  
 
 
 private ArrayList<String> getFileList(String folder) {
  
  
  File[] files=new File(folder).listFiles();
 
  for(int i=0;i<files.length;i++) 
  {
   if(files[i].isDirectory()){
    fileList.add(files[i].getPath().toString());
   }
   else if(files[i].isFile()){
    fileList.add(files[i].getPath().toString());
   }
  }
  return fileList;
 }




여기에.. fileList에 계속 null값이 들어가서 정상적인 값이 안나오는데요..

이걸 어떻게 고쳐야될까요..?

오류는 없는데...값이 계속 null로만 나오네요. 

fList.addAll(getFileList(path));&nbsp; 이 부분에서 값을 못불러오는것같은데..


게속 디렉토리가 없다는 내용만 뜨네요.

 

헬프미 (5,430 포인트) 님이 2015년 4월 28일 질문
헬프미님이 2015년 4월 28일 수정

1개의 답변

0 추천
선언을 온크리트 위에 하시고 온크리트에 Log 를 찍어서 해당폴더가 찍히는질 확인먼저해보세요..
콜벳 (7,150 포인트) 님이 2015년 4월 28일 답변
@Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.magnifymain);
        
     text2 = (TextView) findViewById(R.id.text2);
     Log.d("magnifyActivity", "폴더명-->" + path);

     }

이것만 넣어두고 나머지 다 주석막아보세요
당연히 관계있죠... 가상핸드폰인데 폴더자체가 어딨어요...
핸드폰이야 내장메모리가 있고 그 기본폴더를 Environment.getExternalStorageDirectory().getAbsolutePath(); 이걸로 잡아주는건데...핸드폰으로 해보세요
04-28 18:15:55.281: D/dalvikvm(7244): GC_FOR_ALLOC freed <1K, 7% free 11066K/11856K, paused 14ms, total 14ms
04-28 18:15:55.366: D/libEGL(7244): loaded /system/lib/egl/libEGL_mali.so
04-28 18:15:55.366: D/libEGL(7244): loaded /system/lib/egl/libGLESv1_CM_mali.so
04-28 18:15:55.371: D/libEGL(7244): loaded /system/lib/egl/libGLESv2_mali.so
04-28 18:15:55.376: E/(7244): Device driver API match
04-28 18:15:55.376: E/(7244): Device driver API version: 29
04-28 18:15:55.376: E/(7244): User space API version: 29
04-28 18:15:55.376: E/(7244): mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Tue Jul 22 19:59:34 KST 2014
04-28 18:15:55.451: D/OpenGLRenderer(7244): Enabling debug mode 0


로그만 했을때는 이렇게뜨네요.
풀소스는

04-28 18:23:56.156: D/libEGL(11326): loaded /system/lib/egl/libEGL_mali.so
04-28 18:23:56.161: D/libEGL(11326): loaded /system/lib/egl/libGLESv1_CM_mali.so
04-28 18:23:56.166: D/libEGL(11326): loaded /system/lib/egl/libGLESv2_mali.so
04-28 18:23:56.171: E/(11326): Device driver API match
04-28 18:23:56.171: E/(11326): Device driver API version: 29
04-28 18:23:56.171: E/(11326): User space API version: 29
04-28 18:23:56.171: E/(11326): mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Tue Jul 22 19:59:34 KST 2014
04-28 18:23:56.266: D/OpenGLRenderer(11326): Enabling debug mode 0
04-28 18:23:57.341: D/ProgressBar(11326): setProgressDrawable drawableHeight = 0
04-28 18:23:57.501: D/ProgressBar(11326): updateDrawableBounds: left = 0
04-28 18:23:57.501: D/ProgressBar(11326): updateDrawableBounds: top = 0
04-28 18:23:57.501: D/ProgressBar(11326): updateDrawableBounds: right = 600
04-28 18:23:57.501: D/ProgressBar(11326): updateDrawableBounds: bottom = 50
04-28 18:23:57.501: D/ProgressBar(11326): updateDrawableBounds: mProgressDrawable.setBounds()

이렇게뜨네요... 디렉토리가 없다는건...없어졌네요..;;
AVD로 해서 그렇구나..
근데 결과값은 아무것도 안뜨네요
메소드를 호출해야 될것 같은데

자바파일 하나에서 전부 실행되는건데
이건 관계없나요?
다른클래스면 생성자 생성 해서 prinFilelist();
해주면 될거같은데..  
같은 클래스에서 oncreate안에 호출하는건 모르겠네요..
Activity.this.printFilelist(); 이렇게 해도 같은 결과로
강제종료되네요
...