这更像是一个与Android有关的Java问题。
我的代码包含一个包含30个案例的switch语句。每个案例的主体具有相同的格式以启动与该案件相关的意图。我试图将主体编码为一个方法,将类的名称作为参数,但该代码不能编译,因为类名必须在意图中进行硬编码。
以下是交换机的一部分(很长的路径)
switch(mState) {
case 0:
Intent myIntent = new Intent();
myIntent.setClass(Home_ASM.this, Home_AS0.class);
startActivityForResult(myIntent, 0);
break;
case 1:
Intent myIntent1 = new Intent();
myIntent1.setClass(Home_ASM.this, Home_AS1.class);
startActivityForResult(myIntent1, 2);
break;
我想编代码:
switch(mState) {
case 0:
myStart(Home_AS0.class,1);
break;
case 1:
myStart(Home_AS1.class,2);
break;
和方法
private void myStart(String state, int value) {
Intent myIntent = new Intent();
myIntent.setClass(Home_ASM.this, state);
startAcivityForResult(myIntent, value);
}
关于如何使这项工作的任何想法?
答案 0 :(得分:2)
为什么没有方法
private void myStart(Class class, int value)
只是传递一个类而不是字符串?
答案 1 :(得分:2)
您可以尝试Class.forName("nameofClass");
答案 2 :(得分:1)
我们做了类似的事情。我们的代码看起来有点像这样:
转换声明:
case 0:
{
launchActivity(ActivityOne.class, value);
break;
}
启动活动的方法:
private void launchActivity(Class<?> aClass, int value) {
Intent intent = new Intent();
intent.setClass(this, aClass);
startActivityForResult(intent, value);
}
您可以轻松调整此值以获取特定的int
值。希望这有帮助!