Android - 启动意图问题

发布于 2024-12-09 09:15:44 字数 536 浏览 0 评论 0原文

当我想开始新活动时,我使用以下代码:

Intent myIntent1 = new Intent(this, Info1.class);
startActivity(myIntent1);

但是,如果我从字符串数组中获取类名呢?我尝试过这样的方法 class.forName :

Intent intent = new Intent(this, Class.forName(array[1]));
startActivity(intent);

但没有成功。它给了我错误

java.lang.ClassNotFoundException:加载程序中的 Info1 dalvik.system.PathClassLoader

即使在第一种情况下它成功启动了一个活动。我必须补充一点,我 100% 确定 array[1] 包含字符串“Info1”,并且我的包中有 Info1.class。

你知道,如何解决这个问题吗?

Whenewer I want to start new activity, I use this code:

Intent myIntent1 = new Intent(this, Info1.class);
startActivity(myIntent1);

But, what about the case, I am getting class name from String Array? I have tried method class.forName like this:

Intent intent = new Intent(this, Class.forName(array[1]));
startActivity(intent);

But no success. It is giving me error of

java.lang.ClassNotFoundException: Info1 in loader
dalvik.system.PathClassLoader

even though in first case it started an activity successfully. I have to add that I am 100% sure array[1] contains string "Info1" and that I have Info1.class in my package.

Do you know, how to solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

倾`听者〃 2024-12-16 09:15:44

该方法

Class.forName("xxxxx");

需要完全限定名称,这意味着您应该提供名称以及包详细信息(类存在于哪个包中)

作为示例

Class.forName("com.mypackage.MyClass");

此处参考文档

The method

Class.forName("xxxxx");

Needs fully qualified name which means you should give the name along with the package details(in which package the class exists)

as an example

Class.forName("com.mypackage.MyClass");

Documentation Reference here

弱骨蛰伏 2024-12-16 09:15:44

您需要将完整的包名称添加到 class.forName 参数中,例如 ple 而不是 array[1]。

You need to add the full package name to your class.forName parameter, like ple instead of array[1].

ζ澈沫 2024-12-16 09:15:44

请尝试以下操作:

Class clazz = Thread.currentThread().getContextClassLoader().findClass(array[1]);
new Intent(this, clazz);

Try the following:

Class clazz = Thread.currentThread().getContextClassLoader().findClass(array[1]);
new Intent(this, clazz);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文