0

这是我的TYPEFACE

public class TYPEFACE {

    public static final Typeface Rupee(Context ctx){
        Typeface typeface = Typeface.createFromAsset(ctx.getAssets(), "Rupee_Foradian.ttf");
        return typeface;
    }
    public static final Typeface ArialRounded(Context ctx){
        Typeface typeface = Typeface.createFromAsset(ctx.getAssets(), "Rupee_Foradian.ttf");
        return typeface;
    }

}

我尝试通过以下方式使用反射访问此类中的方法

Method method;
TYPEFACE typeface;
try{            
    method = typeface.getClass().getMethod("Rupee",Context.class);
}catch(Exception e){
    System.out.println("method : "+e);
}

但它会抛出nullpointerexception.

05-21 17:12:07.026: I/System.out(14917): method : java.lang.NullPointerException

我不知道这种方式有什么问题。有人可以帮助我。

提前致谢。

4

3 回答 3

4

typefacenull,因为它没有被初始化

将此更改为TYPEFACE typeface = new TYPEFACE();

于 2013-05-21T11:30:29.327 回答
2

NullPointerException是由于变量字体为空。

但是您不需要TYPEFACE类的实例来调用该方法。只需尝试

try{            
    method = TYPEFACE.class.getMethod("Rupee",Context.class);
    method.invoke(null, new Context()); // since its a static method, can be invoked directly
}catch(Exception e){
    System.out.println("method : "+e);
}
于 2013-05-21T11:40:10.527 回答
0

你想初始化字体然后在使用它之后

你的第二个代码就像....

Method method;
TYPEFACE typeface=new TYPEFACE();
try{            
    method = typeface.getClass().getMethod("Rupee",Context.class);
}catch(Exception e){
    System.out.println("method : "+e);
}
于 2013-05-21T11:36:32.550 回答