2013-03-14 3 views
-1

J'ai ce code pour obtenir les fichiers de polices du dossier assests:NullPointer Exception Lors de l'obtention des fichiers de polices de assests en utilisant class loader

public static Typeface getMyFont(Context context, String resource) { 
    InputStream is; 
    Typeface font = null; 
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); 

    AssetManager assetManager = context.getResources().getAssets(); 

    try { 
     is = classLoader.getResourceAsStream(resource); 
     is = assetManager.open(resource); 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
     String line = null; 
     while ((line = br.readLine()) != null) { 
      Log.e("wwwww", line); 
     } 
     br.close(); 
     font = Typeface.createFromAsset(context.getAssets(), line); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return font; 
} 

ici ressource police/MYFONT.ttf dans le dossier de assests qui est lié (raccourci), mais je me exception nullpointer dans cette ligne:

font = Typeface.createFromAsset(context.getAssets(), line); 
+0

Qu'est-ce que vous essayez même de le faire? –

+0

deuxième paramètre dans createFromAssets est le nom de la police dans le dossier des actifs – Pragnani

+0

Lorsque vous dites 'dans le dossier des actifs qui est lié (raccourci)' que faites-vous signifie exactement? Êtes-vous sûr que le fichier MYFONT.ttf est actuellement inclus dans le fichier .apk? –

Répondre

1
my_font = Typeface.createFromAsset(context.getAssets(), "fonts/MYFONT.ttf"); 
+0

si nous avions copié les fichiers cela fonctionnera mais des fichiers sont liés alors ça ne marchera pas – Goofy

1

je faisais face au même problème aussi, vous pouvez essayer autour de la partie où vous ajoutez la police avec essayer & bloc catch pour attraper une exception de pointeur nul, donc, dans mon cas,

Typeface comingsoon = Typeface.createFromAsset(getApplicationContext().getAssets(), "ComingSoon.ttf"); 

devient

try{ 
    Typeface comingsoon = Typeface.createFromAsset(getApplicationContext().getAssets(), "ComingSoon.ttf"); 
} 
catch(NullPointerExecption e){ 
    //... 
} 
Questions connexes