我有一项活动可以从4或5个不同的活动开放,所以我可以找到我当前活动的活动...
如果有任何想法请帮助我..
答案 0 :(得分:43)
您可能希望为用于启动活动的意图添加额外内容,以指示意图的来源或请求的位置。
例如:
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("caller", "MainActivity");
startActivity(intent);
然后您的OtherActivity
可以检测到onCreate
中的“来电者”:
String caller = getIntent().getStringExtra("caller");
Class callerClass = Class.forName(caller);
答案 1 :(得分:13)
Android有一个函数,如果你使用startActivityForResult:
ComponentName prev = this.getCallingActivity();
答案 2 :(得分:1)
添加一些额外内容以表达不同的活动
例如:
startActivity(new Intent(this, otherActivity.class).putExtra("from" , "previousActivity"));
并在当前活动中获取额外内容
string act = getIntent().getStringExtra("from");
所以“行为”会指示您正在呼叫的活动。
答案 3 :(得分:1)
创建一个Interfare并为您的活动设置值然后在Intent中传递这些值并进入Child Activity看一下这段代码
public interface ActivityRefs {
public static final int ACTIVITY_1 = 1;
public static final int ACTIVITY_2 = 2;
public static final int ACTIVITY_3 = 3;
}
在调用活动
中创建Intent并传递这样的值intent.putExtra("callingActivity", ActivityRefs.ACTIVITY_1);
然后在Called activity
中int callingActivityName = getIntent().getIntExtra("callingActivity", 0);
switch (callingActivityName) {
case ActivityConstants.ACTIVITY_1:
// Activity3 is started from Activity1
break;
case ActivityConstants.ACTIVITY_2:
// Activity3 is started from Activity2
break;
}
答案 4 :(得分:0)
我已经解决了,在我的情况下,我们在ActivityA
到ActivityB
,然后想要以编程方式返回ActivityA
,这里是我的代码
ActivityA:
String currentActivity;
void onCreate(...){
...
currentActivity = this.getClass().getName();
...
}
然后关于你的意图(仍在ActivityA
中):
Intent intent = new Intent(this, ActivityA.class);
intent.putExtra("from", currentActivity);
startActivity(intent);
this.finish();
现在在ActivityB上:
Class fromClass;
void onCreate(...){
...
String String from = getActivity().getIntent().getStringExtra("from");
try {
fromClass = Class.forName(from);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
...
}
然后关于你的意图(仍在ActivityB
中)回到ActivityA
:
Intent intent = new Intent(this, fromClass);
startActivity(intent);
this.finish();