【问题标题】:converting a string to a class将字符串转换为类
【发布时间】:2011-05-24 00:46:38
【问题描述】:

我正在尝试根据一些用户输入在一个 Activity 之间移动。

我正在尝试使用:

String myClass = "some_user_input.class"
Intent myIntent = new Intent(getApplicationContext(), myClass);
startActivity(myIntent);

...从一项活动转移到另一项活动。

我可以做到这一点,我直接在硬代码中引用我的新活动,不要尝试从文本编译它(即 classA.class),但是我希望能够通过传递它来构建我的 Intent一些用户编译的字符串。

例如,如果用户在编辑文本中输入 B,我想转到 classB.class 如果用户输入Z,我想去classZ.class

有什么方法可以编译我想使用的类,然后将其转换为类?

提前致谢!

【问题讨论】:

标签: java android string class


【解决方案1】:

反射机制允许你这样做:

String myClass = "some_user_input";
Class<?> clazz = Class.forName(myClass);
Intent myIntent = new Intent(getApplicationContext(), clazz);

请注意,这些类应包含在 android 清单 XML 中。

另外请注意,我没有处理此示例中的异常 :)

【讨论】:

  • 我试过你的代码。它的抛出类notfoundexception。知道为什么吗?
  • 它会抛出异常,因为您需要将完整的包添加到字符串中,例如us.foobar.package.some_user_input
【解决方案2】:

这是我使用Class.forName() 方法的解决方案:

String myClass = "foo.class";
Intent i = new Intent(getApplicationContext(), Class.forName(myClass));
startActivity(i);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多