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 スレッドで scan を呼び出している可能性があります。操作中に UI 全体がブロックされている場合、これは明らかです。

試す:

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