2011-07-21 12 views
13

GetFilesDir() devuelve nulo, lo que es completamente extraño. Lo que es peor, es mi código es ... dolorosamente simple:getFilesDir() devolviendo nulo

public class main extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    File f = this.getFilesDir(); 
    f.getAbsolutePath(); 

    tempClicked((ToggleButton)findViewById(R.id.tempToggle)); 
} 

Esto se colgará en f.getAbsolutePath(). Actualmente se ejecuta en el emulador emulando un sistema 2.3.3 a 1024x600.

Google no devuelve nada sobre esto ... así que, ¿por qué sucede esto? ¿Y cómo lo arreglo?

¡Muchas gracias!

EDIT :: RESUELTO!

Bueno, un poco ...

creo que resultó ser un error del emulador. Cambié el aspecto del emulador a WXVGA, y eso permitió que escribiera los archivos correctamente. Y cuando cambié la resolución a 1024x600, seguía funcionando correctamente.

Por lo tanto, si alguien tiene un error similar, le sugiero que juegue con el emulador hasta que encuentre una forma de superar el error.

+0

Esto es extraño! Tanto en los dispositivos físicos como en los emuladores, recibo una cadena como "/data/data/com.example.myapp/files" cuando llamo a Context.getFilesDir(). Incluso traté de eliminar mi tarjeta SD a pesar de que debería ser independiente. Mismo resultado. Eso es realmente desconcertante. – Shlublu

+1

@Shlublu El motivo por el que recibe la misma cadena es que el sistema no tiene ningún concepto de su tarjeta SD, solo almacenamiento interno/externo. – rf43

+0

Acabo de encontrarme con este error. Es ridículo. Cambiar el aspecto del emulador de un lado a otro también lo solucionó. Mierda como esta es por qué odio usar los emuladores. –

Respuesta

0

Trate de añadir esto antes f.getAbsolutePath():

File f = new File(this.getApplicationContext().getFilesDir() + "/"); 
f.mkdirs(); 
+1

Resultó ser un error del emulador. Jugué con la piel y densidad del emulador y el código, sin cambiarlo, de repente cobró vida. Si ejecuté su código mientras el emulador aún tenía errores, habría intentado hacer que el foldder/null/que de todos modos no hubiera funcionado ... – Squimmy

+0

man, getFilesDir() devolviendo nulo, entonces ¿cómo va a funcionar? trabajo !! – NarendraJi