2011-12-10 12 views
24

Tengo una simple función de lectura de archivo de texto.getAssets(); de otra clase

AssetManager mngr = getAssets(); 
InputStream is = mngr.open("textdb.txt"); 

Funciona de mi actividad principal. Pero si uso el mismo código en una clase separada, getAssets() simplemente devuelve null/crash.

No puedo encontrar por qué solo funciona en la clase principal.

¿Alguna idea?

Solución:

subClass.ReadSettings(getApplicationContext()); 

public String[] ReadSettings(Context myContext) { 
} 

Respuesta

51

Es su otra clase también un Activity? getAssets() es un método de Contexto. Si su clase no es una actividad, deberá pasarle un contexto y luego llamar a getAssets sobre eso.

así:

public myClass(Context myContext) { 
    AssetManager mngr = myContext.getAssets(); 
    InputStream is = mngr.open("textdb.txt"); 
} 
+1

Gracias! ¡Eso lo resolvió! Al pasar el contexto. – jonassvensson

+0

¡Ningún problema! ¿Podría seleccionar su respuesta como la respuesta correcta haciendo clic en la marca de verificación? Esto elimina la pregunta de la lista 'Sin respuesta' y facilita que otras personas con el mismo problema encuentren una respuesta correcta. –