fah*_*yaz 32 java string android class android-activity
我正在处理我正在处理的Android应用程序的问题.
我的应用程序有几个部分,下一个加载的屏幕基于一个字符串.因此,第1部分的屏幕1将是S1S1.
我的问题是,如何基于字符串启动活动.我将S1S1保存在一个字符串中,让我们称之为nextactivity.而不是必须键入S1S1.class,我需要它来自字符串.我已经完成了我可以做的一切,谷歌并没有真正帮助.
我尝试过的一些事情是
Intent myIntent = new Intent(nextactivity);
Intent myIntent = new Intent(v.getContext(), getClass().getName().valueOf(nextactivity));
Intent myIntent = new Intent(v.getContext(), Class.forName(nextactivity));
Run Code Online (Sandbox Code Playgroud)
并尝试运行
startActivityForResult(myIntent, 0);
Run Code Online (Sandbox Code Playgroud)
但似乎没什么用.有任何想法吗?
Dha*_*dra 72
这是一个代码,您可以使用该活动的名称开始活动
String activityToStart = "com.example.MainActivity";
try {
Class<?> c = Class.forName(activityToStart);
Intent intent = new Intent(this, c);
startActivity(intent);
} catch (ClassNotFoundException ignored) {
}
Run Code Online (Sandbox Code Playgroud)
编辑
这里的类名将是包名称的类的全名.例如,如果您的包名称是x.y.z,如果您调用A了活动名称,那么活动的全名将A是x.y.z.A.
Eht*_*ury 33
一种更好的方法(以及在系统中用于启动Browser.apk以及未与AOSP捆绑的其他应用程序的方式):
Intent intent = new Intent();
intent.setClassName("com.android.browser","com.android.BrowserActivity");
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
或者,如果要检查是否可以Activity从命令行启动,可以从shell执行以下操作:
adb shell
am start com.android.browser/.BrowserActivity
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26315 次 |
| 最近记录: |