如何找到在android中打开当前活动的最后一个活动?
我有一个活动可以从4个或5个不同的活动中打开,因此我可以从中找到我当前活动的名称如何找到在android中打开当前活动的最后一个活动?,android,android-activity,Android,Android Activity,我有一个活动可以从4个或5个不同的活动中打开,因此我可以从中找到我当前活动的名称 如果有任何想法,请帮助我。您可能希望在用于启动活动的意图中添加额外内容,以指示意图来自何处或请求是什么 例如: Intent intent = new Intent(this, OtherActivity.class); intent.putExtra("caller", "MainActivity"); startActivity(intent); 然后您的OtherActivity可以在其onCreate中检
如果有任何想法,请帮助我。您可能希望在用于启动活动的意图中添加额外内容,以指示意图来自何处或请求是什么 例如:
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);
如果您使用startActivityForResult,Android具有此功能: ComponentName prev=this.getCallingActivity()
为不同的活动添加一些额外的内容 例如: 并在当前活动中获得额外的
string act = getIntent().getStringExtra("from");
因此,“act”将指示您调用活动。创建一个Interfare并为您的活动设置值,然后将这些值传递给Intent并进入子活动。请看这段代码
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.putExtra("callingActivity", ActivityRefs.ACTIVITY_1);
然后在调用活动中
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;
}
我已经解决了它,在我的例子中,我们在
ActivityA
到ActivityB
然后想以编程方式返回到ActivityA
,这里是我的代码
活动A:
String currentActivity;
void onCreate(...){
...
currentActivity = this.getClass().getName();
...
}
然后根据您的意图(仍在活动A中)执行以下操作:
现在进入活动B:
Class fromClass;
void onCreate(...){
...
String String from = getActivity().getIntent().getStringExtra("from");
try {
fromClass = Class.forName(from);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
...
}
然后根据您的意图(仍在活动b
)返回到活动a
:
Intent intent = new Intent(this, fromClass);
startActivity(intent);
this.finish();
我使用了like this Intent=new Intent(this,OtherActivity.class);putExtra(“调用者”,getIntent().getComponent().getClassName());星触觉(意向);然后在其他活动中,我使用字符串className=getIntent().getStringExtra(“调用方”),然后使用Class c=Class.forName(className);因此,我可以将其用作我的目标活动
getCallingActivity()
方法仅在您以startActivityForResult
的形式启动子活动时有效。如果使用startActivity()
以正常方式启动子活动,则getCallingActivity()
方法将返回null。这在报告中提到。
Class fromClass;
void onCreate(...){
...
String String from = getActivity().getIntent().getStringExtra("from");
try {
fromClass = Class.forName(from);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
...
}
Intent intent = new Intent(this, fromClass);
startActivity(intent);
this.finish();