2014-08-31 74 views
0

我想在我的Android应用程序中使用自定义字体。我跟着指示和创建Android Studio中的assets文件夹中,我把verdana.ttf,在图中显示:从Android Studio中的资产加载字体时出现NullPointerException

assets

然后我所说的,我MainActivity活动如下:

public class MainActivity extends ActionBarActivity { 

    Typeface mainFont = Typeface.createFromAsset(getAssets(), "verdana.ttf"); 

的代码编译,但是当活动启动时,我在上面的行上得到了一个NullPointerException。我怀疑verdana.ttf文件可能已损坏,但尝试使用不同字体时错误仍然存​​在。清理项目也无济于事。资产文件夹是否位于错误的位置?我可能会做错什么?

回答

3

您正试图从初始化程序调用createFromAsset()。请将此移至onCreate(),拨打super.onCreate()后。在此之前,您在Activity中继承的方法可能无法正常工作。

+0

谢谢,它的工作原理就是这样!但在我的代码构造下,我需要在'onCreateView'方法的静态类中调用'createFromAsset()'。所以在'super.onCreate()'调用之后,我尝试了'Typeface.createFromAsset(getActivity()。getAssets(),“verdana.ttf”)',并且在这里我得到一个'NullPointerException'。有没有解决这个问题(或者我应该把它作为一个新问题吗?)。 – Sid 2014-08-31 15:59:43

+0

@Sid:“但是在我的代码构造中,我需要在onCreateView方法的静态类中调用createFromAsset()onCreateView()可以调用getActivity()来获取有效的Context。 。将这个'Context'传递给一个静态方法,它懒化地初始化你的'Typeface'。 “有没有解决方案(或者我应该把它作为一个新问题发布?)” - 我不明白你的评论的其余部分,所以如果我在这里给出的建议不够充分,你可能需要提出一个新问题包括完整的堆栈跟踪和源代码。 – CommonsWare 2014-08-31 16:03:42

+0

它的工作。非常感谢。 – Sid 2014-08-31 16:10:06

相关问题