2013-02-13 49 views
5

我有一点问题。我想以其他方式开始活动。我知道意图和从字符串开始活动

Intent i = new Intent(this, ActivityTwo.class); 

初始化意图和之后,我可以startActivity。但我想这样做类似的东西:

Intent i = new Intent(this, MyString.class); 

我没有nameActivity.class,但我想改变string.class。当我有班级的字符串名称时,我该如何开始活动? startActivity(this, Class.forName(yourStringClass));

+0

到底是什么情景?您是否尝试根据某个STRING值开始活动,该值将用作要启动的活动的名称? – Anukool 2013-02-13 09:28:33

+1

http://stackoverflow.com/questions/5754855/how-can-i-start-a-new-android-activity-using-a-string – baboo 2013-02-13 09:28:54

+1

你可以使用反射,但它真的有必要吗? – Areks 2013-02-13 09:28:59

回答

6

试试这个名称来查找一个Class这里的类名将是包名的全名。例如,如果您的软件包名称为x.y.z,并且您的活动名称为A,则活动A的全名将为x.y.z.A.

+0

构造函数Intent(TabsGenerator,Class )也未定义:) – user1302569 2013-02-13 09:33:30

+0

尝试投射: (Class <?extends Activity>)Class.forName(“YourClass”)' – PaNaVTEC 2013-02-13 09:36:48

+0

Intent intent = new Intent(TabsGenerator.this,(Class <?extends Activity>)Class.forName(StringClassname));不起作用。同样的错误 – user1302569 2013-02-13 09:44:54

2

您可以通过使用Class.forName("MyString")

6

这里是您可以使用活动

Class<?> c = null; 
if(StringClassname != null) { 
    try { 
     c = Class.forName(StringClassname); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
Intent intent = new Intent(mail.this, c); 
startActivity(intent); 

的名字开始活动代码:

+0

构造函数Intent(TabsGenerator,Class )未定义 – user1302569 2013-02-13 09:35:11

+0

更改此: '意图(TabsGenerator,类<捕获#3的?>);' 到 '意图(TabsGenerator.this,类<捕获#3的?>;' – jlopez 2013-02-13 09:37:16

+0

我有和仍然是相同的错误 – user1302569 2013-02-13 09:43:52

1


Class<?> c =Class.forName("YOUR STRING"); 
Intent intent = new Intent(FirstActivity.this, c); 
startActivity(intent); 
+0

构造函数Intent(TabsGenerator,Class )未定义 – user1302569 2013-02-13 09:32:50

+0

这是错误吗? – Anukool 2013-02-13 09:36:28

+0

yes。这是我使用该解决方案时的错误 – user1302569 2013-02-13 09:46:10

1

只需使用....

Intent intent = new Intent().setClassName(activity,"packageName"+"className"); 
    startActivity(intent);