2013-05-03 2 views
0

Ниже приведен мой код, который проверяет, является ли выбранный файл каталогом или файлом. Если это каталог, он меняется на него. Но как мне вернуться в родительский каталог на кнопку «Назад»?Как вернуться в родительский каталог на задней кнопке нажмите?

Я вижу кое-что в Stackflow код, который идет root.parent, когда обратное, но теперь я не нашел этот код.

gridView =(GridView)findViewById(R.id.grid); 
    gridView.setOnItemClickListener(new OnItemClickListener(){ 
    public void onItemClick(AdapterView<?> parent, View view, int 
    position,long id) { 


    if(currentFiles[position].isDirectory()) 
    { 
     root = new File("/data/data/com.myexample 
/files/"+FileName(currentFilePath[position])+"/"); 

     Log.e("Root first",root+ " "); 

     currentFiles = root.listFiles(); 

     inflateListView(currentFiles); 
    } 


    private void inflateListView(File[] files){ 


List<Map<String,Object>> listItems = new ArrayList<Map<String,Object>>(); 


for(int i=0;i<files.length;i++) 

{  
    Map<String, Object> listItem = new HashMap<String, Object>(); 

    if(files[i].isDirectory()) 
    { 
     listItem.put("icon", R.drawable.folder); 
    } 
    else 
    { 
     listItem.put("icon", R.drawable.file); 
    } 

    listItem.put("fileName", files[i].getName()); 
    listItems.add(listItem); 
    } 

simpleAdapter=new SimpleAdapter(this,listItems,R.layout.line,new String[] 
{"icon","fileName"},new int[]{R.id.icon,R.id.file_name}); 
gridView.setAdapter(simpleAdapter); 
+1

Вы попробовали какие-либо ответы? Вы действительно должны повышать/принимать, если ответ помог вам и прокомментировать/понизить, если ответ был неправильным или не помог. – britzl

ответ

0

Вам необходимо переопределить метод, который вызывается на backpressed:

/** {@inheritDoc}. */ 
@Override 
public void onBackPressed() { 
    if (this.currentDirectory.getParent() != null) { 
     // --> browse one folder up... 
    } else { 
     // --> you are already at the root folder 
    } 
} 
0

Это легко обнаружить, если нажата кнопка назад. У вас есть несколько вариантов:

1) Перекрыть View.onKeyDown():

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     Log.d(this.getClass().getName(), "back button pressed"); 
    } 
    return super.onKeyDown(keyCode, event); 
} 

2) Override Activity.onBackPressed():

@Override 
public void onBackPressed() { 
} 

3) Override Activity.onKeyDown() (вызывается, если нет мнения не обработал нажатие клавиши):

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK)) { 
     Log.d(this.getClass().getName(), "back button pressed"); 
    } 
    return super.onKeyDown(keyCode, event); 
} 
0

Попробуйте следующее: Сохраните свой путь в переменной String, сообщите dirname и инициализируйте его в корневом каталоге.

Initialize
String dirname=<your-root-directory>;

Слегка изменить ваш onItemClick в

protected void onListItemClick(ListView l, View v, int position, long id) 
{ 
    if(currentFiles[position].isDirectory()) 
    { 
     dirname=dirname+FileName(currentFilePath[position])+"/"; //changes here 
     root = new File(dirname); 

     Log.e("Root first",root+ " "); 

     currentFiles = root.listFiles(); 
     inflateListView(currentFiles); 
    } 
} 

Для перехода обратно в родительский каталог при нажатии кнопки назад, написать следующий код:

@Override 
public void onBackPressed() 
{ 
    if(dirname.equals(<your-root-directory>)) 
    { 
     super.onBackPressed(); 
    } 
    else 
    { 
     dirname=dirname.substring(0, dirname.lastIndexOf("/")); 
     root = new File(dirname); 
     Log.e("Root first",root+ " "); 
     currentFiles = root.listFiles(); 
     inflateListView(currentFiles); 
    } 
} 

Любые сомнения , поделитесь здесь.

+0

dirname canot b resolved –

+0

Вам нужно инициализировать 'dirname' в верхней части каталога. Над этим каталогом, нажав назад, будет выполняться операция по умолчанию. Например, установите 'String dirname ="/data/";' или любой другой каталог верхнего уровня. Не стесняйтесь задавать дальнейшие сомнения. –

Смежные вопросы