Android:如何在Intent中将活动作为额外内容传递?

时间:2016-07-23 08:02:09

标签: android android-intent data-extraction

我需要启动一个活动,告诉用户完成表单后必须启动哪些活动。

我试过这个似乎是正确的

new Intent(this, Activity1.class)
     .putExtra("myActivity", Activity2.class);

如果我必须让它启动另一个课我会做

new Intent(this, Activity1.class)
     .putExtra("myActivity", AnotherActivity.class);

这是正确的方法吗?

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

4 个答案:

答案 0 :(得分:1)

请尝试以下示例代码:

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字段输入数据并单击按钮提交后可以访问它! / p>

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

答案 1 :(得分:0)

你为什么要发起一项活动来启动其他活动。相反,直接使用if或切换条件来进行不同的活动

创建以下类

public void startIntent(Class c){
startActivity(new Intent(youActivity.this,c)
}

如果您想使用if语句来启动不同的活动

if(your condition){
startIntent(Activity1.class)
}
if(another condition){
startIntent(anotherActivity.class)
}

答案 2 :(得分:0)

如果在活动之间传递数据,您应该记住,您始终应该尽可能少地传递数据。也总是尝试将问题简化为更简单的问题。

在您的情况下,您有两项活动将在用户提交表单时启动。我们将它们称为A和B.因此,您只需传递字符串文字"A""B",而不是传递ActivityA.classActivityB.class,然后传递到您的目标活动中您可以根据所获得的字符串决定应该启动哪个活动。如果字符串为"A",则启动活动A,否则为B。

答案 3 :(得分:0)

随包一起传递Activity的名称,然后通过反射获得所需的类。

传递数据:

TextField

获得所需的活动:

new Intent(this, Activity1.class)
     .putExtra("myActivity", "com.mypackage.activity.Activity2");