如何决定我们来自哪个活动?

时间:2014-02-22 11:45:21

标签: android android-intent android-activity

Hello Old sports!

到目前为止,我有3项活动如下:

-Activity A

- 活动B

-Activity C

在活动A中我创建了一个转到活动C的意图:

Intent intent=new Intent(getActivity(),C.class);
startActivity(intent);
活动B中的

我也创建了去活动C的意图:

Intent intent=new Intent(getActivity(),C.class);
startActivity(intent);

在活动C中,如果来自A和B,我将做一些不同的事情。

问题是,如何让活动C知道正在呼叫的活动A或B是什么最好的做法?

- 缺乏英语,来自巴厘岛的问候..

7 个答案:

答案 0 :(得分:6)

您可以将意图的参数传递给另一个活动,这样您就可以知道哪个活动已经开始。

Intent intent=new Intent(getActivity(),C.class);
intent.putString("activity","A");  // and same goes for B
startActivity(intent);

和活动C,

Intent intent = getIntent();
String previousActivity= intent.getStringExtra("activity");

答案 1 :(得分:4)

您可以在此处执行的操作是,当flag = "A"Activity A来自flag = BActivity B时,您可以传递一个值Intent并在Activity C ...

中获取该值

在活动A

Intent intent = new Intent(this, C.class);
intent.putExtra("flag", "A");
startActivity(intent);

在活动B中

Intent intent = new Intent(this, C.class);
intent.putExtra("flag", "B");
startActivity(intent);

在活动C

    Intent intent = getIntent();
    String checkFlag= intent.getStringExtra("flag");

if(checkFlag.equals("A");
// It is from A

else
// It is from B

答案 2 :(得分:2)

此外,您可以在两个活动中使用静态变量,然后使用intent传递静态变量的值。

与前任一样

public static int a = 1;

public static int b = 2;

然后通过意图传递

并在您的上一个活动中获取静态变量的值并完成。您将能够知道您来自哪个活动。

答案 3 :(得分:1)

您有两种选择。

1)在调用活动C时使用startActivityForResult()。在这种情况下,您可以使用getCallingActivity()方法找到它。

2)在调用活动C时添加额外的意图。

// in activity A
Intent intent = new Intent(this, C.class);
intent.putExtra("calling", "A");
startActivity(intent);

// in activity B
String callingActivity = getIntent().getStringExtra("calling"); 

答案 4 :(得分:1)

从A类到C类:

Intent intent=new Intent(getActivity(),C.class);
intent.putExtras("ActivityName","A")
startActivity(intent);

从B级到C级:

Intent intent=new Intent(getActivity(),C.class);
intent.putExtras("ActivityName","B")
startActivity(intent);

在C组中你写,

 String strActivityName = getIntent().getStringExtra("ActivityName");

根据您收到的价值,您可以决定通话活动,并在那里执行定制。

答案 5 :(得分:1)

  

我想在你的C活动中创建静态变量boolean   然后传递静态变量的值,其中C为A活动的true   和B作为活动。在盯着C活动之前我会更新   C活动中的静态变量

C.fromActivity=true;
Intent intent=new Intent(getActivity(),C.class);
startActivity(intent);

答案 6 :(得分:0)

接受的答案和其他答案适用于4-5个班级。但是,如果您有超过20或30个活动,那么您可以使用以下代码:

在你的A或B课程中:

Intent intent = new Intent(this, C.class);
intent.putExtra("flag", A.class); // or intent.putExtra("flag", B.class);
startActivity(intent);

现在,在您的C类中,将全局对象声明为:

public Class classPreviousActivity;

然后在onCreate():

try {
    classPreviousActivity = (Class<Activity>) getIntent().getExtras().getSerializable("flag");
} catch (Exception e) {
    e.printStackTrace();
}

结束时:

startActivity(new Intent(C.this, classPreviousActivity));

使用上面的代码,您可以返回到您来自的活动。