현재 리스트액티비티를 통해서
 
특정함수 클릭시 특정 경로의 파일들을 출력하게 되고
 
마찬가지로 같은 액티비티내의 특정함수 클릭시 특정함수 클릭시 특정 경로의 파일들을 출력하게 됩니다.
 
즉, 동일 액티비티의 내용이 변경되는것인데요
 
이경우, 핸드폰 단말기의 뒤로가기 버튼을 누르게 될경우 기존액티비티의 내용이 나타나지 않고
 
그냥 액티비티가 종료되어 버리게 됩니다.
 
 
지금현재 FTP서버에 접속해서 파일들을 재귀함수를 통해서 리스트화 시키는 작업에 있는데
 
문제는 재귀함수를 통해서 한액티비티안에 파일들을 다시 리스트시켜주니까 뒤로가기 버튼을 누르면
 
기존 경로의 내용들이 출력되는것이 아니라 아예 액티비티자체가 종료되어 버리는것이 문제점입니다.
 
나름대로 고심해본다고 지금 하고있는데 진척상황이 없으니 답답해 죽을것같네여;;
 
 
혹시 모르니 소스코드 첨부하겠습니다.
 
public class Filelist01Activity extends ListActivity {
  
 private List<String> item = null;
 private List<String> path = null;
 private TextView myPath;
 FTPClient con;
 FTPFile[] files;
 
 
 
 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        myPath = (TextView)findViewById(R.id.path);
        Log.v("HES","접속시도");
        try{
      Log.v("HES","Before Connect");
         con = new FTPClient();
         Log.v("HES","클라이언트생성");
         
       
         con.connect("ftp.imrc.kist.re.kr", 21);
         con.login("gre_kist", "gre1003");
         con.enterLocalPassiveMode();
         con.setFileType(con.BINARY_FILE_TYPE);
         Log.v("HES","End Connect");
         
        }catch(Exception e){
          e.printStackTrace();
        }
        Log.v("HES","접속완료");
        getDir("/");
     }
   
    private void getDir(String dirPath){
     
     try{
        con.changeWorkingDirectory(dirPath);
        files=con.listFiles();
        myPath.setText("Location: " + dirPath);
     item = new ArrayList<String>();
     path = new ArrayList<String>();
     
     
     FTPFile[] files = con.listFiles();
     if(!dirPath.equals("/")){
      item.add("/");     
      path.add("/");
      item.add("../");     
      path.add(con.getStatus());
     }
     
     Log.v("HES","Test1");
     for(int i=0; i < files.length; i++){      
      //File file = files[i];
      
      path.add(con.getStatus(dirPath).toString());
      
      if(files[i].isDirectory())
       {
       item.add(files[i].getName() + "/");
       }
      else       
       item.add(files[i].getName().toString());
       }
     
     Log.v("HES","Test2");
     
     
     ArrayAdapter<String> fileList =new ArrayAdapter<String>(this, R.layout.row, item);
     setListAdapter(fileList);
     Log.v("HES","Test3");
     }catch(Exception e)
     {
      e.printStackTrace();
     }
    }
   
   
   
    protected void onListItemClick(ListView l, View v, int position, long id){
     
         
     
     if (files[position].isDirectory()){//폴더일경우
      if(files[position].getSize()!=0){   
       getDir(files[position].getName().toString());
       }
     
     else{   
      new AlertDialog.Builder(this).setIcon(R.drawable.icon).setTitle("[" + files[position].getName() + "] folder can't be read!")
      .setPositiveButton("OK",new DialogInterface.OnClickListener(){             
        public void onClick(DialogInterface dialog, int which) {      
              }     
        }).show();
      }
      }
   
     else{  
      new AlertDialog.Builder(this)
      .setIcon(R.drawable.icon)
      .setTitle("[" + files[position].getName() + "]")
      .setPositiveButton("OK",new DialogInterface.OnClickListener(){
        public void onClick(DialogInterface dialog, int which){
        }
      }).show();
     }
    }   
}