我有2个活动:Activity1
和Activity2
。在每个活动中都有一个按钮,可以将我带到第三个活动(MainActivity
)。在MainActivity
中,我想知道是从哪个活动页面调用的。
我有2个活动:Activity1
和Activity2
。在每个活动中都有一个按钮,可以将我带到第三个活动(MainActivity
)。在MainActivity
中,我想知道是从哪个活动页面调用的。
Intent intent = new Intent(this, Next.class);
intent.putExtra("activity","first");
startActivity(intent);
下一个活动(Next Activity),
Intent intent = getIntent();
String activity = intent.getStringExtra("activity");
现在在字符串活动中,你将会得到它来自哪个Activity的名称。
您可以使用:
public ComponentName getCallingActivity()
了解是哪个Activity
调用了当前的Activity
。
startActivityForResult()
启动活动时才起作用,而不是 startActivity()
。 - Anubian NoobIntent i = new Intent(Activity1.this, MainActivity.class).putExtra("from", "activity1");
startActivity(i);
要检查主活动中的活动,请执行以下操作:
if(getIntent().getStringExtra("from").equals("activity1")){
//From Activity 1
}else {
// Activity 2
}
当您从一个活动转移到另一个活动时,可以按照以下方式传递活动名称
Intent i = new Intent(this, deliveries.class);
i.putExtra("ActivityName", "ActivityOne");
startActivity(i);
并在另一个活动中检查活动名称
Bundle extra = getIntent().getExtras();
String activityName = Long.parseLong(extra.getSerializable("ActivityName")
toString());
我认为它可以解决你的问题
当你启动你的活动:
Intent intent = new Intent(activity, HistoryDetailsResults.class);
intent.putExtra(Activity.ACTIVITY_SERVICE, activity.getLocalClassName());
activity.startActivity(intent);
使用 Activity.ACTIVITY_SERVICE
,我认为您正在使用良好的实践。 (Activity.ACTIVITY_SERVICE
是 String
:'activity')
activity.getLocalClassName()
返回此值:view.YourActivity 作为 String
编辑:与其使用 activity activity.getLocalClassName()
,我更喜欢使用 activity.getClass().getSimpleName()
Intent intent = new Intent(activity, HistoryDetailsResults.class);
intent.putExtra(Activity.ACTIVITY_SERVICE, activity.getClass().getSimpleName());
activity.startActivity(intent);
Intent intent = getIntent();
String startActivity = intent.getStringExtra(Activity.ACTIVITY_SERVICE)
String activityToCompare = YourActivityToCompare.class.getSimpleName()
你想要做什么:
if( startActivity.equalsIgnoreCase(activityToCompare) {
//Do what you want
}
int
或其他标志。 - Adil Soomro