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);
4

3 に答える 3

0

バックプレスで呼び出されるメソッドをオーバーライドする必要があります。

    /** {@inheritDoc}. */
@Override
public void onBackPressed() {
    if (this.currentDirectory.getParent() != null) {
        // --> browse one folder up...
    } else {
        // --> you are already at the root folder
    }
}
于 2013-05-03T09:48:02.790 に答える
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) Activity.onBackPressed( ) をオーバーライドします。

@Override
public void onBackPressed() {
}

3) 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);
}
于 2013-05-03T09:52:45.113 に答える