0

我有两个 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;
}

}

4

3 回答 3

3

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

选项:

  • 向构造函数添加上下文
  • 为上下文字段添加 setter 方法
  • 如果您不在其他地方使用 Font 类,您可以像 Raghunandan 提出的那样内联代码
于 2013-03-12T09:36:30.857 回答
1

在 LoginActivity 中这样写

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

然后在字体类

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;
}
于 2013-03-12T10:27:06.653 回答
0

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

 Typeface tf = Typeface.createFromAsset(getAssets(),"fonts/verdana.ttf");
 email = (EditText)findViewById(R.id.edtTextUname);
 email.setTypeface(tf,Typeface.BOLD);
于 2013-03-12T09:36:34.023 回答