我正在使用start活动结果打开另一个活动并返回包含额外内容的intent。
无论如何,我想知道以下是否可行。 我将举一个例子,让我更容易理解我在做什么。
让我们说 活动A. 活动B. 和活动C,即活动A和B开始的结果。
我想知道我是否可以陈述,如果从活动A推出C,C揭示了一个隐藏的微调器。如果它是B发射C,则旋转器仍然隐藏。
基本上,活动C根据启动它的活动而变化。
有没有办法实现这个目标?
答案 0 :(得分:0)
传入resultCode int。为什么不在Activity C中检查该值并根据它设置微调器?或者,您可以使用您检查的某个值传递Bundle。
答案 1 :(得分:0)
活动A:执行此操作
Intent intent = new Intent();
intent.setClass(this, Other_Activity.class);
intent.putExtra("HIDE_SPINNER", false);
startActivity(intent);
活动B:做到这一点
Intent intent = new Intent();
intent.setClass(this, Other_Activity.class);
intent.putExtra("HIDE_SPINNER", true);
startActivity(intent);
活动C:执行此操作
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
if (extras != null) {
Boolean shouldHide = extras.getBoolean("HIDE_SPINNER");
if (shouldHide ) {
// hide it
} else {
// show it
}
}
答案 2 :(得分:0)
您可以使用getCallingActivity()方法完成任务。
从中读取班级名称,并与ActivityA
和ActivityB
的名称相匹配。
将以下代码写入活动C。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// ....
// Below is code to setup
String callingActivity = getCallingActivity().getShortClassName().replace(".", "");
if (ActivityA.class.getSimpleName().equals(callingActivity)) {
// Activity has been called by Activity A
} else if (ActivityB.class.getSimpleName().equals(callingActivity)) {
// Activity has been called by Activity B
}
}
其他资源包括how to know the calling activity in android和How to know if an activity is called using startActivityForResult or simply called by using startActivity?