java文件夹往后退,在android中向后退键添加功能以转到文件管理器中的上一个文件夹位置...

I know this has been discussed so many times but really I am not able to figure it out. I am so sorry for asking it again. I am making android file manager. I am showing the files and folders in a listview. I want to add functionality to "back" key. Currently pressing back key at any time results in exit from the app. I want it to go to the previous folder if any or otherwise exit the app. I was trying onBackPressed() method but couldn't figure out what should be written there. Please help me.

Here is my MainActivity.java file :

public class MainActivity extends ListActivity {

private ArrayList item = null;

private ArrayList path = null;

private String root="/";

private TextView myPath;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); /**super keyword in java is a reference variable that

is used to refer immediate parent class object. */

setContentView(R.layout.activity_main);

myPath = (TextView)findViewById(R.id.path); /* storing the current path*/

getDir(root);

}

private void getDir(String dirPath)

{

myPath.setText("Location: " + dirPath);

item = new ArrayList();

path = new ArrayList();

File f = new File(dirPath);

File[] files = f.listFiles(); /** files is an array of all the files in a directory. */

if(!dirPath.equals(root))

{

item.add(root);

path.add(root);

item.add("../");

path.add(f.getParent());

}

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

{

File file = files[i];

path.add(file.getPath());

if(file.isDirectory())

item.add(file.getName() + "/");

else

item.add(file.getName());

}

ArrayAdapter fileList = new ArrayAdapter(this, R.layout.row, item);

setListAdapter(fileList);

}

protected void onListItemClick(ListView l, View v, int position, long id) {

File file = new File(path.get(position));

if (file.isDirectory())

{

if(file.canRead())

getDir(path.get(position));

else

{

new AlertDialog.Builder(this)

.setIcon(R.drawable.icon)

.setTitle("[" + file.getName() + "] folder can't be read!")

.setPositiveButton("OK",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

}

}).show();

}

}

else

{

new AlertDialog.Builder(this)

.setIcon(R.drawable.icon)

.setTitle("[" + file.getName() + "]")

.setPositiveButton("OK",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

}

}).show();

}

}

解决方案

you can try this:

@Override

protected void onBackPressed(){

//super.onBackPressed(); //remove it if you want control

String previousDir = "build your previous dir here";

if (previousDir != null){ //if deferent root path

Intent activityDir = new Intent(this, MainActivity.class);

activityDir.putExtra("DIR_PATH", previousDir);

startActivity(activityDir);

}//end if

finish(); //close this screen to show new screen above with new path

}

Note: you have to edit onCreate(....) as bellow code:

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); /**super keyword in java is a reference variable that

is used to refer immediate parent class object. */

setContentView(R.layout.activity_main);

myPath = (TextView)findViewById(R.id.path); /* storing the current path*/

if(getIntent() != null){

root = getIntent().getStringExtra("DIR_PATH", root); //if is null then get root

}

getDir(root);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值