我正在尝试用android上的反射创建一个textview,但我无法成功并得到一个例外,我在下面显示。谁能和我分享一个例子?
我想要做的事情非常简单,我将创建一个textview,并通过调用它的setText方法将一些文本放入其中。
TextView x = new TextView(this);
x.setText("asjdhjasd");
代码
Class cls = Class.forName("android.widget.TextView");
Class param[] = new Class[1];
param[0] = context.getClass();
Constructor ct = cls.getConstructor(param); //THROWS AN EXCEPTION HERE CALLED NO SUCH METHOD EXCEPTION.
Object paramVal[] = new Object[1];
paramVal[0] = context;
Object retobj = ct.newInstance(paramVal);
我解决了这个问题
param[0] = Context.class; //instead of param[0] = context.getClass();
答案 0 :(得分:1)
请改为尝试:
Constructor ct = cls.getConstructor( context.getClass() );
编辑:抱歉,我应该解释原因。
当你看到像这样的方法时
getConstructor(Class... parameterTypes)
它不需要一个类数组,它希望这些类作为参数。它被称为varargs,你可以在http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
上阅读它