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是什么最好的做法?
- 缺乏英语,来自巴厘岛的问候..
答案 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 = B
后Activity B
时,您可以传递一个值Intent
并在Activity C
...
Intent intent = new Intent(this, C.class);
intent.putExtra("flag", "A");
startActivity(intent);
Intent intent = new Intent(this, C.class);
intent.putExtra("flag", "B");
startActivity(intent);
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));
使用上面的代码,您可以返回到您来自的活动。