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

时间:2011-03-29 04:34:16

标签: android android-activity

我有一项活动可以从4或5个不同的活动开放,所以我可以找到我当前活动的活动...

如果有任何想法请帮助我..

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)

我已经解决了,在我的情况下,我们在ActivityAActivityB,然后想要以编程方式返回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();