Intent和从字符串启动Activity

6

我有一个小问题。我想以其他方式启动活动。我知道

与此相关的一些东西,但是我不确定如何实施。你能帮我理清思路吗?
Intent i = new Intent(this, ActivityTwo.class); 

首先初始化意图,然后就可以使用startActivity。但我想做这样一件事:

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

我没有nameActivity.class,但我想在string.class上进行更改。当我有类名字符串时,如何启动活动?


您的场景是什么?您是否正在尝试基于某个字符串值启动一个活动,该值将用作要启动的活动的名称? - Anukool
1
https://dev59.com/o2025IYBdhLWcg3w3J1H - baboo
1
你可以使用反射,但这真的有必要吗? - user1162766
当你有一个例如ActivityFirst.class的文件时,我想要一个字符串而不是ActivityFirst,这是必要的。 - user1302569
可能是重复的问题:如何使用字符串启动新的Android活动? - ThomasW
4个回答

8
尝试一下这个: startActivity(this, Class.forName(yourStringClass));

构造函数 Intent(TabsGenerator, Class<capture#2-of ?>) 也未定义 :) - user1302569
尝试使用强制类型转换:(Class<? extends Activity>)Class.forName("YourClass") - PaNaVTEC
Intent intent = new Intent(TabsGenerator.this, (Class<? extends Activity>)Class.forName(StringClassname)); 也不起作用。同样的错误。 - user1302569
1
你是否写了完整的类名?包括包名。"com.yourpackage.YourClass" 另外你也可以尝试使用:intent.setClassName(context,target); - PaNaVTEC
尝试使用 new Intent().setClassName()。 - PaNaVTEC

3
您可以使用Class.forName("MyString")按名称查找一个Class

2

只需使用……

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

1


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

构造函数 Intent(TabsGenerator, Class<capture#2-of ?>) 未定义。 - user1302569
1
忘了提一下 - 类名应该是完全限定的类名。假设包名是com.something,字符串是"THESTRING",那么完全限定名将是 - com.something.THESTRING.. 希望这可以帮助到您。 - Anukool
@Anukool:请编辑你的答案并将此评论放入其中。 - Kishor Pawar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接