来自方法的StartActivity

时间:2012-07-25 14:52:30

标签: java android android-intent

这更像是一个与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);
            }

关于如何使这项工作的任何想法?

3 个答案:

答案 0 :(得分:2)

为什么没有方法

private void myStart(Class class, int value)

只是传递一个类而不是字符串?

答案 1 :(得分:2)

您可以尝试Class.forName("nameofClass");

编辑:编辑完成后,Jon Taylor的回答比我的答案更合适。 请参阅:http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#forName%28java.lang.String%29

答案 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值。希望这有帮助!