以下代码中的java.lang.NullPointerException?

时间:2013-03-12 09:32:35

标签: android

我有两个java类,其中一个是活动类,现在来自该活动类,我想调用第二个类的函数,它不是一个活动类。但是当我在Font类中调用函数GetRobotoRegularFont时,它向我显示一个错误“引起:

java.lang.NullPointerException
at com.ojaswi.font.Font.GetRobotoRegularFont(Font.java:16)
at com.ojaswi.bookingscapemob.LoginActivity.onCreate(LoginActivity.java:29)

“..两个java文件的代码是..请任何人帮我回答..

第一个Java文件的代码

public class LoginActivity extends Activity {

EditText email;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login);
    email = (EditText)findViewById(R.id.edtTextUname);
    email.setTypeface(new Font().GetRobotoRegularFont());


}

}

第二个Java文件的代码

public class Font {

Typeface tf;
Context myContext;
public final Typeface GetRobotoRegularFont() {
    String fontPath = "fonts/Roboto-Regular.ttf";
    tf = Typeface.createFromAsset(myContext.getAssets(), fontPath);
    return tf;
}

}

3 个答案:

答案 0 :(得分:3)

你永远不会在Font类中设置Context。

选项:

  • 向构造函数添加上下文
  • 为上下文字段添加setter方法
  • 如果你不在其他地方使用Font类,你可以像Raghunandan提出的那样内联代码

答案 1 :(得分:1)

在LoginActivity中以这种方式编写

email.setTypeface(new Font().GetRobotoRegularFont(this));

然后在Font类

public class Font {

Typeface tf;
Context myContext;
public final Typeface GetRobotoRegularFont(Context context) {
    myContext = context;
    String fontPath = "fonts/Roboto-Regular.ttf";
    tf = Typeface.createFromAsset(myContext.getAssets(), fontPath);
    return tf;
}

答案 2 :(得分:0)

假设文件位于assets文件夹中,您可以执行以下操作。

 Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/verdana.ttf");
 email = (EditText)findViewById(R.id.edtTextUname);
 email.setTypeface(tf,Typeface.BOLD);