0

我的工作任务是读取 sd 卡文件,我想在 textview 上显示所有带有位置的 sdcard 文件,但是,我的代码正在成功读取,但是,当我找到解决方案 runonuithread 后读取文件不起作用时,我无法更新 textview 文本但是,它也不起作用。我的代码如下所示:

public void scan (final File path) {

            try
            {
                for (final File f : path.listFiles()) {
                    if (f.isFile()) {
                      scannedfiles=scannedfiles+1;
                      progresspercentage=scannedfiles*100/FilesCount;   


                      MainActivity.this.runOnUiThread(new Runnable() {

                          @Override
                          public void run() {
                              lbl_scan.setText("SCANING:"+f.getAbsolutePath());\\first time only change text after didn't change
                              Toast.makeText(getApplicationContext(),"Files:"+f.getAbsolutePath(),Toast.LENGTH_SHORT).show(); 
                          }
                      });


                    }
                    else {
                        if(!f.getName().equals("Android"))
                        {
                            scan(f);
                        }
                    }
                }

            }
            catch (Exception e) 
            {

            }
        }

我在代码下面调用扫描功能:

 File root = new File (Environment.getExternalStorageDirectory().getAbsolutePath());
 scan(root);

任何人都可以帮助我不胜感激。

4

1 回答 1

2

您可能正在 UI 线程上调用扫描!如果整个 UI 在操作期间被阻塞,这应该很明显。

尝试:

new Thread() {
    public void run() {
        scan(root);
    }
}.start();
于 2013-02-05T10:48:51.507 回答