Java 如何使用字符串创建意图来启动另一个活动?

Java 如何使用字符串创建意图来启动另一个活动?,java,android,Java,Android,我的应用程序中的第一个活动需要从文本文件加载少量数据。两个字符串和一个整数 加载数据后,我希望使用其中一个字符串创建一个意图,该意图将启动下一个活动 当前活动将无法具有如下硬编码引用: startActivity(new Intent(this, NextClass.class)); 需要从文件中的字符串指定NextClass.class,并将其包含在项目中 我可以在另一个活动中创建数据文件,但我希望在可能有其他方法的情况下避免仅为此创建另一个活动。您的项目中是否包含所有潜在的类?如果是这样的

我的应用程序中的第一个活动需要从文本文件加载少量数据。两个字符串和一个整数

加载数据后,我希望使用其中一个字符串创建一个意图,该意图将启动下一个活动

当前活动将无法具有如下硬编码引用:

startActivity(new Intent(this, NextClass.class));
需要从文件中的字符串指定NextClass.class,并将其包含在项目中


我可以在另一个活动中创建数据文件,但我希望在可能有其他方法的情况下避免仅为此创建另一个活动。

您的项目中是否包含所有潜在的类?如果是这样的话,您就不能在第一个活动中读取字符串的名称,然后将字符串转换为实际的类名吗 (例如:


等等?

是否所有潜在的类都内置在您的项目中?如果是,您不能在第一个活动中读取字符串的名称,然后将字符串转换为实际的类名吗 (例如:


etc?

通过组件名启动任意活动是脆弱的,因为它破坏了封装。如果其他代码块被重构,您的字符串将突然失效。只在单个项目中执行此操作,其中任何此类重构都将被编译器拾取

此外,根据此文件所在的位置,可能存在安全问题


使用
PackageManager
通过内省查找活动,或者让文件保存一个操作字符串,并让其他活动设置
Intent
过滤器以匹配。

通过组件名称启动任意活动是脆弱的,因为它会破坏封装。如果其他代码块被重构,所有突然,您的字符串将不再有效。只能在单个项目中执行此操作,在该项目中,任何此类重构都将被编译器拾取

此外,根据此文件所在的位置,可能存在安全问题

使用
PackageManager
通过内省查找活动,或者让文件保存操作字符串,并让其他活动设置与之匹配的
Intent
筛选器。

尝试以下操作:

try {
    String className = 'com.www.tutorialforandroid.com.openActivity';
    Intent openNewIntent = new Intent( this, Class.forName( className ) );
    startActivity(  openNewIntent );
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
试试这个:

try {
    String className = 'com.www.tutorialforandroid.com.openActivity';
    Intent openNewIntent = new Intent( this, Class.forName( className ) );
    startActivity(  openNewIntent );
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

看看它是否是您需要的我将尝试您发布的内容看看它是否是您需要的我将尝试您发布的内容实际上,第一个活动将不知道其他活动的名称-这是因为第一个活动是来自另一个项目的库文件。因此它无法将它们与硬编码字符串进行比较。事实上,它只会启动一个活动活动,在要加载的字符串文件中指定的活动。实际上,第一个活动将不知道其他活动名称-这是因为第一个活动是来自另一个项目的库文件。因此它无法将它们与硬编码字符串进行比较。实际上,它只会启动一个活动,即在字符串文件t中指定的活动o加载。我决定对该活动进行分类,因为它的目的是在独立应用程序中一次性重复使用。另一方面,我将研究包管理器的未来用途。感谢Commonware…我喜欢droid书籍!我决定对该活动进行分类,因为它的目的是在独立应用程序中一次性重复使用。另一方面另一方面,我将研究包管理器的未来用途。感谢Commonware…我喜欢droid书籍!