我可以从两个不同的活动A和B到达活动C.活动C有一个按钮。我想检查一下是从C转到C还是从B转到C.如果我从A转到C,我希望按钮做一件事,如果我从B转到C,我想要按钮来做另一件事。
是否可以检查之前的活动是哪个?
像这样......
else if (id == R.id.action_button) {
if (previosActivity == A) {
Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);
}
else if (previosActivity == B) {
Intent intent = new Intent(this, AnotherActivity.class);
startActivity(intent);
}
return true;
}
答案 0 :(得分:10)
当您从任何活动转到活动C 时,您可以通过意图传递extra
。然后,您可以在活动C 中检索extra
并根据需要使用它
<强>例如强>
当您从到
Intent mIntent = new Intent(this, ActivityC.class); //'this' is Activity A
mIntent.putExtra("FROM_ACTIVITY", "A");
startActivity(mIntent);
当您从到
Intent mIntent = new Intent(this, ActivityC.class); //'this' is Activity B
mIntent.putExtra("FROM_ACTIVITY", "B");
startActivity(mIntent);
现在在活动C 中,您可以检索:
Intent mIntent = getIntent();
String previousActivity= mIntent.getStringExtra("FROM_ACTIVITY");
然后你可以使用
if (previousActivity.equals("A")){...}
or
if (previousActivity.equals("B")){...}
与你的问题一样。
答案 1 :(得分:0)
我认为没有直接的方法可以做到这一点,但您可以查看用于启动Intent
的{{1}}。
例如,您可以向启动了活动C的Activity
添加额外字段。
Intent
然后在活动C中,您可以使用Intent i = new Intent(this, ActivityC.class);
i.putExtra("Key", "Value");
来查看。
答案 2 :(得分:0)
您需要在活动A和B中向Intent添加信息,然后在C中读取该信息。
在A和B中:
public static final String KEY_ACTIVITY_NAME = "KEY_ACTIVITY_NAME";
Intent intent = new Intent(context, ActivityC.class);
intent.putExtra(KEY_ACTIVITY_NAME, activityName);
startActivity(intent);
然后在C:
if (getIntent().getStringExtra(KEY_ACTIVITY_NAME) == "A") {
//Do something
} else if (getIntent().getStringExtra(KEY_ACTIVITY_NAME) == "B" {
//Do something else
}