我怎样才能使用string开始一个新的android活动?

我遇到了一个我正在处理的Android应用程序的问题。

我的应用程序有几个部分,加载的下一个屏幕是基于一个string。 那么,第1部分的屏幕1就是S1S1。

我的问题是,我怎样才能启动一个基于string的活动。 我有S1S1保存在一个string,让我们称之为nextactivity。 我不需要键入S1S1.class,而是需要它来自string。 我已经和我所能做的一切交stream,谷歌并没有真正帮助。

我试过的一些东西是

Intent myIntent = new Intent(nextactivity); Intent myIntent = new Intent(v.getContext(), getClass().getName().valueOf(nextactivity)); Intent myIntent = new Intent(v.getContext(), Class.forName(nextactivity)); 

并试着运行

 startActivityForResult(myIntent, 0); 

但似乎没有任何工作。 有任何想法吗?

Solutions Collecting From Web of "我怎样才能使用string开始一个新的android活动?"

以下是可以使用活动名称开始活动的代码

 String activityToStart = "com.example.MainActivity"; try { Class<?> c = Class.forName(activityToStart); Intent intent = new Intent(this, c); startActivity(intent); } catch (ClassNotFoundException ignored) { } 

编辑

这里的类名将是包名的全名。 例如,如果您的软件包名称是xyz ,并且您的活动名称为A则活动A的全名将为xyzA

一个更好的方法(在系统中用来启动Browser.apk以及未与AOSP捆绑在一起的其他应用程序):

 Intent intent = new Intent(); intent.setClassName("com.android.browser","com.android.BrowserActivity"); context.startActivity(intent); 

另外,如果你想检查你是否可以从命令行启动Activity ,你可以在你的shell中做这样的事情:

 adb shell am start com.android.browser/.BrowserActivity 

我不知道的解决scheme,但我有一个替代scheme类似于div隐藏和显示在网页上。

如果你的s1s1是加载低的内容,让他们在一个线性布局,并保持其加载formss1的能见度。 当你点击s1到达s1s1时,隐藏s1并将可见度参数设置为“可见”。

通过这样做,你可以避免创build一个单独的活动,这种方式也很容易导航回来。

使用枚举!

 public enum SectionActivity { S1S1(MyS1Activity.class), S1S2(S2Activity.class); private Class<? extends Activity> activityClass; private SectionActivity(Class<? extends Activity> clazz) { this.activityClass = clazz; } public Class<? extends Activity> getActivity { return activityClass; } } 

然后在你的代码中的某个地方:

 SectionActivity act = SectionActivity.valueOf(string); Intent intent = new Intent(this, act.getActivity()); startActivity(intent);