Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何找到在android中打开当前活动的最后一个活动?_Android_Android Activity - Fatal编程技术网

如何找到在android中打开当前活动的最后一个活动?

如何找到在android中打开当前活动的最后一个活动?,android,android-activity,Android,Android Activity,我有一个活动可以从4个或5个不同的活动中打开,因此我可以从中找到我当前活动的名称 如果有任何想法,请帮助我。您可能希望在用于启动活动的意图中添加额外内容,以指示意图来自何处或请求是什么 例如: Intent intent = new Intent(this, OtherActivity.class); intent.putExtra("caller", "MainActivity"); startActivity(intent); 然后您的OtherActivity可以在其onCreate中检

我有一个活动可以从4个或5个不同的活动中打开,因此我可以从中找到我当前活动的名称


如果有任何想法,请帮助我。

您可能希望在用于启动活动的意图中添加额外内容,以指示意图来自何处或请求是什么

例如:

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();