我有一个Classes数组,如下所示:
private static final Class[] testerClasses={
Tester1.class
};
我需要它像这样,所以我可以启动Android意图,像这样:
intent =new Intent(this,testerClasses[0]);
startActivity(intent);
我正在试图弄清楚如何做以下事情,我真的很想弄明白该怎么做......
为什么我要这样做?有时候我想把这个函数称为一个intent,有时候我只想获取有关intent的数据,而不必调用它。我的abstractTester类(其中所有具体的测试器类都继承自)包含一些类似测试名称的内容,这在Intent甚至开始之前很方便。
感谢您的帮助!
答案 0 :(得分:1)
您将无法使用Intent
传递类对象。相反,在intent中传递类名;接收者可以通过loadClass()
一旦接收者拥有了类对象,它就可以使用反射来调用预期的方法。
答案 1 :(得分:1)
正确的解决方案是:
private static final abstractTester[] testerClasses={
new Tester1()
};
intent =new Intent(this,testerClasses[0].getClass());
startActivity(intent);
然后,如果我需要引用该类,我可以这样做。像魅力一样工作!
答案 2 :(得分:0)
您好,您可以尝试使用以下代码,
ArrayList<Class<?>> a = new ArrayList<Class<?>>();
a.add(MainActivity2.class);
a.add(MainActivity.class);
Intent intent =new Intent(this,a.get(0));
startActivity(intent);