Android:如何在一个意图内将一个活动作为额外活动传递?

Android:如何在一个意图内将一个活动作为额外活动传递?,android,android-intent,data-extraction,Android,Android Intent,Data Extraction,我需要启动一个活动,告诉用户在填写表单后必须启动什么活动 我试过这个,它似乎是正确的 new Intent(this, Activity1.class) .putExtra("myActivity", Activity2.class); 如果我必须让它再上一堂课,我会做的 new Intent(this, Activity1.class) .putExtra("myActivity", AnotherActivity.class); 这条路对吗 在Activity1中,我

我需要启动一个活动,告诉用户在填写表单后必须启动什么活动

我试过这个,它似乎是正确的

new Intent(this, Activity1.class)
     .putExtra("myActivity", Activity2.class);
如果我必须让它再上一堂课,我会做的

new Intent(this, Activity1.class)
     .putExtra("myActivity", AnotherActivity.class);
这条路对吗


在Activity1中,我应该如何获得.class type的额外参数?

为什么要启动一个activity,而inturn会启动其他activity。相反,使用if或switch条件直接启动不同的活动

创建以下类

public void startinent(c类){
startActivity(新意图)(youActivity.this,c)

}
为什么您希望启动一个活动,而该活动会启动其他活动。相反,请使用“如果”或“切换条件”直接启动不同的活动

创建以下类

public void startinent(c类){
startActivity(新意图)(youActivity.this,c)

}
尝试以下示例代码:

private static final int LAUNCH_A = 100;
private static final int LAUNCH_B = 200;

//launch activity here with extras to decide which other activity to launch next

Intent intent = new Intent(this, Activity1.class);

//Now decide here, which activity you want to launch in the next one

if(shouldLaunchA){
   intent.putExtra("LAUNCH_TARGET", LAUNCH_A); 
}else{
   intent.putExtra("LAUNCH_TARGET", LAUNCH_B);
}

startActivity(intent);
现在,在您的活动1中,您可以获得额外功能并打开它们:

Intent intent = getIntent();

// you could place this as a class level variable:
int launchTarget = intent.getExtras().getInt("LAUNCH_TARGET");

switch(launchTarget){
   case 100:
      //Launch activity A
      break;
   case 200:
      //launch activity B
      break;
}
这就是你所需要的一切,让这个工作

正如我在上面所暗示的,您应该将
launchTarget
变量设置为类级变量,以便用户在
EditText
字段中输入数据并单击按钮提交后,您可以访问它


祝您好运,如果您需要进一步帮助,请告诉我!

尝试以下示例代码:

private static final int LAUNCH_A = 100;
private static final int LAUNCH_B = 200;

//launch activity here with extras to decide which other activity to launch next

Intent intent = new Intent(this, Activity1.class);

//Now decide here, which activity you want to launch in the next one

if(shouldLaunchA){
   intent.putExtra("LAUNCH_TARGET", LAUNCH_A); 
}else{
   intent.putExtra("LAUNCH_TARGET", LAUNCH_B);
}

startActivity(intent);
现在,在您的活动1中,您可以获得额外功能并打开它们:

Intent intent = getIntent();

// you could place this as a class level variable:
int launchTarget = intent.getExtras().getInt("LAUNCH_TARGET");

switch(launchTarget){
   case 100:
      //Launch activity A
      break;
   case 200:
      //launch activity B
      break;
}
这就是你所需要的一切,让这个工作

正如我在上面所暗示的,您应该将
launchTarget
变量设置为类级变量,以便用户在
EditText
字段中输入数据并单击按钮提交后,您可以访问它


祝你好运,如果你需要进一步的帮助,请告诉我!

将活动名称与包一起传递,然后通过反射获得所需的类

传递数据:

new Intent(this, Activity1.class)
     .putExtra("myActivity", "com.mypackage.activity.Activity2");
获取所需的活动:

String desiredActivityName = getIntent().getExtras().getString("myActivity");
Class<? extends Activity> targetActivity = Class.forName(desiredActivityName).asSubclass(Activity.class);
Intent launchIntent = new Intent(this, targetActivity);
String desiredActivityName=getIntent().getExtras().getString(“myActivity”);

Class将活动的名称与包一起传递,然后通过反射获得所需的类

传递数据:

new Intent(this, Activity1.class)
     .putExtra("myActivity", "com.mypackage.activity.Activity2");
获取所需的活动:

String desiredActivityName = getIntent().getExtras().getString("myActivity");
Class<? extends Activity> targetActivity = Class.forName(desiredActivityName).asSubclass(Activity.class);
Intent launchIntent = new Intent(this, targetActivity);
String desiredActivityName=getIntent().getExtras().getString(“myActivity”);


ClassYou不这样做;传递一个像字符串“ActivityB”一样的唯一值或者C或整数,比如1,2,3,然后在你得到额外的信息时切换,以知道要启动哪个活动!你是对的,但这似乎是避免切换部分的一种方法。你需要从中选择多少活动?也许从那里我可以帮你实际上有两个活动应该很容易;让我在下面给出一个答案,让你尝试;你不需要这样做传递一个唯一的值,如字符串“ActivityB”或者C或整数,比如1,2,3,然后在你得到额外的信息时切换,以知道要启动哪个活动!你是对的,但这似乎是避免切换部分的一种方法。你需要从中选择多少活动?也许从那里我可以帮上忙实际上有两个活动应该很容易;让我在下面给出一个答案,让你尝试;是的,我可以创建一个类,其中我将在Activity1完成任务后需要启动的类对象设置为完成任务,然后这将从同一个类中获取。是的,我可以创建一个类,其中我将在Activity1完成任务后需要启动的类对象设置为完成任务,然后这将从同一个类中获取。这是正确答案,但使用enum可能会“类枚举{OPEN_A,OPEN_B;}”枚举可能非常昂贵though@Eenvicible你能详细说明一下吗?这是正确的答案,但使用enum可能更干净。“类enum{OPEN_A,OPEN_B;}”枚举可能非常昂贵though@Eenvicible你能详细说明一下吗?看看这个