Il motivo per cui questo non funziona è semplicemente perché il secondo argomento di Log.v
è un String
non è un File[]
. Java applica rigorosamente i tipi di argomenti.
Aggiornamento:
Si può facilmente trasformare le informazioni contenute un oggetto File
in un oggetto String
. Tutti gli oggetti java implementano un toString()
, che, se ricordo, restituisce correttamente una combinazione di ClassName
e l'oggetto address
dell'oggetto. Tuttavia questo di solito non contiene informazioni utili. Quindi è necessario definire la conversione da soli.
Adesso convertire da File[]
a String
è più complicato perché quando si chiama un metodo su un array, esso funziona sull'oggetto di matrice piuttosto che sui membri di un array (che contiene le informazioni che sospetto ti interessino). Pertanto chiamando mp3List.toString()
verrà restituita una stringa singola che descrive l'oggetto dell'array e non le informazioni contenute nell'array.
Quindi probabilmente si vorrà scrivere un metodo come questo:
String fileArrayToString(File[] f){
String output = "";
String delimiter = "\n" // Can be new line \n tab \t etc...
for (int i=0; i<f.length; i++)
{
output = output + f[i].getPath() + delimiter;
}
return output;
}
e quindi chiamare a rendere la vostra chiamata registro come segue:
Log.v("MyTag", fileArraytoString(mp3List);
Tuttavia, questo potrebbe essere difficile da leggere.
io personalmente sarebbe fare in questo modo:
for (int i=0; i<mp3List.legnth; i++)
Log.v("MyTag", Integer.toString(i) + ":" + mp3List[i].getPath());
La sua più semplici, produce messaggi di log più pulite ed è più facile da capire che cosa sta succedendo come programmatore.
concatenazione di stringhe deve essere fatto utilizzando uno StringBuilder. Usare + = crea un nuovo oggetto stringa per ogni iterazione perché le stringhe sono immutabili. – Jivings
@Jivings ginocchio in profondità in C# .. :) grazie .. –
Nessun problema, ho ancora votato per la risposta corretta :) – Jivings