public interface ActivityConstants {
public static final int ACTIVITY_1 = 1001;
public static final int ACTIVITY_2 = 1002;
public static final int ACTIVITY_3 = 1003;
}
2)调用Activity 2时在Intent中添加额外参数。
Intent act2 = new Intent(context, Activity2.class);
act2.putExtra("calling-activity", ActivityConstants.ACTIVITY_1);
// or ActivityConstants.ACTIVITY_3 if called form Activity3
startActivity(act2);
3)在练习2中检查此额外参数的值,并采取相应的操作。
int callingActivity = getIntent().getIntExtra("calling-activity", 0);
switch (callingActivity) {
case ActivityConstants.ACTIVITY_1:
// Activity2 is started from Activity1
break;
case ActivityConstants.ACTIVITY_3:
// Activity2 is started from Activity3
break;
}
8条答案
按热度按时间balp4ylt1#
如果您以
startActivityForResult(Intent, int)
启动Activity,则可以通过getCallingActivity().getClassName()
获取调用Activity。h5qlskok2#
A.如果可以使用startActivityForResult
根据以下Zain Ali's answer:如果你可以用startActivityForResult()启动Activity,那么你可以通过这个.getCallingActivity().getClassName();
B.如果不能使用startActivityForResult
如果不能使用startActivityForResult(),则可以使用以下方法:您可以在Intent中传递其他参数,检查Activity中的值并相应地执行操作。
1)定义一个接口或常量类,以定义整数常量来指示调用活动
2)调用Activity 2时在Intent中添加额外参数。
3)在练习2中检查此额外参数的值,并采取相应的操作。
pkwftd7m3#
在呼叫活动(FirstActivity)中:
然后在被调用的activity(SecondActivity)的onCreate中添加以下代码:
请注意,您应该小心,因为当您执行“b.getString(“classFrom”)"时,bundle对象不能为null。
fslejnso4#
您可以传递一个额外的参数来指定调用
Activity
。imzjd6km5#
我成功用途:(Activity).getLocalClassName()
2j4z5cfb6#
传递任何东西(String/ int等)到putExtra,并在此基础上执行以下操作
然后像孩子一样接受
然后
5m1hhzi47#
我用这条线
我希望它能和你一起工作
5lwkijsr8#
另一种解决方案,使用伴随对象,如以下示例所示: