2012-12-20 11 views
5

Ho il seguente metodo per determinare la dimensione del file:Android non può ottenere la dimensione del file dalla finestra di dialogo

public static long getSize(String path) { 

    File file = new File(path); 

    if (file.exists()) { 
     long size = file.length(); 

     return size; 
    } else { 
     Log.e("zero size", "the file size is zero!"); 
     return 0; 

    } 

Ora voglio mostrare una finestra di dialogo con il seguente metodo (il codice non è completa):

public void gimmeDialog(String path_to_file) { 

    final Dialog dialog = new Dialog(this); 
    dialog.setContentView(R.layout.dialog); 
    dialog.setTitle("Confirm"); 

    TextView text = (TextView) dialog.findViewById(R.id.txtUploadInfo); 

    Button dialogButtonOK = (Button) dialog.findViewById(R.id.btnDialogOK); 

    long uploadSize = Send.getSize(path_to_file)/1024/1024; 

    text.setText("You are about to upload " 
      + Long.toString(uploadSize) 
      + " MB. You must accept the terms of service before you can proceed"); 

    dialogButtonOK.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 

    dialog.show(); 
} 

il problema è che uploadSize è sempre zero, anche se il metodo getSize() restituisce la dimensione del file corretto quando viene chiamato al di fuori della funzione di dialogo. Il percorso della stringa dato è corretto. Quale può essere il motivo?

P.S. Invia è il mio nome di classe

+0

è il file più grande poi 1 MB? –

risposta

5

si stanno facendo una divisione integer e se il numenator è più piccolo del denominatore il risultato è 0.

Prova con una doppia divisione:

double uploadSize = 1.0 * Send.getSize(path_to_file)/1024/1024; 
1

Chiama getSize() e imposta una variabile all'esterno della funzione di dialogo, accessibile all'interno della funzione di dialogo. Oppure passalo come variabile alla funzione.

Questo non spiega veramente il problema, ma lo risolve.

+0

Solo così sai; porre domande in un commento e mantenere i post di risposta per le risposte effettive. Sono domande valide, solo la forma sbagliata da chiedere :) – dutt

+0

Ok, grazie per il suggerimento. Ho pensato che quello che stavo suggerendo qui potesse risolvere il problema, quindi ho inserito una risposta. Forse dovrei riformulare? O semplicemente eliminare e aggiungere come commento? – breadbin

+0

WTF Sono stupido. Certo è il modo migliore per passare la dimensione del file alla finestra di dialogo. Funziona, grazie. – Droidman

Problemi correlati