我尝试使用android中的反射按钮,通过以下代码
public String createView(String classFullName){
try{
Class clazz = Class.forName(classFullName);
Object obj = clazz.newInstance(); // but I need to pass the Context using this;
}
catch(ClassNotFoundException ex){
return null;
}
}
但主要的问题是如何将Context(在我的情况下是这样)传递给Object,因为它们都应该是一个View。
答案 0 :(得分:4)
方法Class#newInstance()
只是调用零参数构造函数的便捷方法。如果要调用带参数的构造函数,则需要使用Class#getConstructor(Class...)
通过反射获取正确的Constructor
实例,然后使用Constructor#newInstance(Object...)
调用它。
所以:
Class clazz = Class.forName(classFullName);
Constructor<?> constructor = clazz.getConstructor(Context.class);
Object obj = constructor.newInstance(this);