如何在android上创建带反射的TextView?

时间:2012-01-31 01:54:08

标签: android reflection

我正在尝试用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();

1 个答案:

答案 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

上阅读它