ディレクトリにファイルをリストする方法は?

私はアンドロイド開発に新しいので、これは簡単なことであれば私を許してください。

私はsdカード上のディレクトリ内のすべてのファイルを取得し、それらをスピナーに表示したいが、私はちょうどどのように動作しないのか。 これは私が持っているものであり、それがあれば何か良いことが分かっています。

//creates this directory if its not there??     
File sd = new File("/sdcard/myfolder");

                 //gets a list of the files
                 File[] sdDirList = sd.listFiles(); 

                 //add them to the spinner array (this makes it crash)
                 for(int i=0;i

どこが間違っているの? 使いやすいチュートリアルへの便利なリンクはどこにありますか? それはスピナーでなければならない、私が選ぶことができるちょっとしたリスト

ありがとうございました :)

編集: これでクラッシュすることはありませんが、スピナー配列は塗りつぶされません

File[] sdDirList = sd.listFiles(); 
             if (sdDirList != null)
             {
                 array_spinnerLoad=new String[sdDirList.length];

             for(int i=0;i
1
yepヌルポインタ例外
追加された 著者 user1033558,
小さなヒント(問題があるのか​​どうかは分かりません):SDカードのようなものへのパスをハードコードしないでください。これらのパスはデバイスによって異なります。 Environment.getExternalStorageDirectory()を使用して、 /a>を使用します。すべてのデバイスのプライマリマスストレージへの有効なパスが返されます。
追加された 著者 user658042,

1 答え

/sdcard/myfolder が存在しないか、ディレクトリでない場合、 listFilesnull を返します。あなたはおそらくNPEでクラッシュしています。何が問題なのかを診断するには、 exists()isDirectory()を使用できます。 (さらに、 sdDirList!= null をテストすることもできます)。

P.S.例外など、クラッシュに関する詳細を投稿するために、より正確な回答を得るのに役立ちます。

4
追加された
私はこのことについて新しいことを言ったので、ありがとう。 logcatはこの行を示しています。array_spinnerLoad [i] = sdDirList [i] .getName();ヌルポイント交換を作成する
追加された 著者 user1033558,
おかげでテッド、私は手動でディレクトリにファイルを置いてまだそこに何もない。私はチュートリアルが必要だと思うが、havntはまだ理解している。
追加された 著者 user1033558,
私は自分のPCからディレクトリにファイルを置く。私はそれが今感謝して働いている。ジャグリングのコードの多くがうまくいくように見えるが、アレイが満杯になる前にアダプターを設定することとは何か(笑)
追加された 著者 user1033558,
@ user1033558 - sdDirListnull の場合に起こります。存在しない配列の最初の要素にアクセスしようとしています。 ( sdDirList が最初の要素として null を持ち、 listFilesnull の値を返していない場合配列内にあります)。
追加された 著者 Ted Hopp,
@ user1033558 - alextscのコメントに続いて、ファイルのルートパスを取得するには、 Environment.getExternalStorageDirectory()または Environment.getExternalStoragePublicDirectory()を使用します。コードでリテラル文字列を使用しないでください。私はあなたのファイルがあなたのプログラムに関してどこにあるとは思わないと思う。 (ところで、 "手動でディレクトリにファイルを置く"方法は?)
追加された 著者 Ted Hopp,