如何知道android中的调用活动 [英] how to know the calling activity in android

查看:21
本文介绍了如何知道android中的调用活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个活动被其他一些活动调用.例如:我有 Activity1、Activity2、Activity3.Activity1 调用 Activity2 并传递参数.Activity3 也调用 Activity2 并传递参数.

I have an activity which is called by few other activities. For example: I have Activity1,Activity2,Activity3. Activity1 calls Activity2 and pass parameter. Activity3 also calls Activity2 and pass parameter.

现在基于调用活动,Activity2 执行一些任务.但是我怎么知道哪个活动正在调用 Activity2??有人可以帮我吗??

Now based on the calling activity, Activity2 performs some task. But how do I know which activity is calling Activity2?? can anybody plz help me??

推荐答案

A.如果你可以使用 startActivityForResult

根据Zain Ali 的回答如下:如果您可以使用 startActivityForResult() 启动 Activity,那么您可以获得呼叫名称Activity 类通过 this.getCallingActivity().getClassName();

As per Zain Ali's answer below: If you can start Activity with startActivityForResult() then you can get name of calling Activity class by this.getCallingActivity().getClassName();

B.如果不能使用 startActivityForResult

如果你不能使用startActivityForResult(),那么你可以使用下面的方法:您可以在 Intent 中传递附加参数,检查 Activity 中的值并采取相应措施.

If you can not use startActivityForResult(), then you can use following method: You can pass additional parameter in intent, check the value in activity and act accordingly.

1) 定义一个接口或常量类来定义整数常量来表示调用活动

1) Define an interface or constants class to define integer constants to indicate calling activity

public interface ActivityConstants {
            public static final int ACTIVITY_1 = 1001;
            public static final int ACTIVITY_2 = 1002;
            public static final int ACTIVITY_3 = 1003;
}

2) 在调用 Activity2 时在意图中添加额外的参数.

2) Add extra parameter in intent while calling Activity2.

        Intent act2 = new Intent(context, Activity2.class);
                act2.putExtra("calling-activity", ActivityConstants.ACTIVITY_1);
    // or ActivityConstants.ACTIVITY_3 if called form Activity3
startActivity(act2);

3) 检查 Activity2 中这个额外参数的值并采取相应措施..

3) Check the value of this extra parameter in Activity2 and act accordingly..

int callingActivity = getIntent().getIntExtra("calling-activity", 0);

        switch (callingActivity) {
        case ActivityConstants.ACTIVITY_1:
            // Activity2 is started from Activity1
            break;
        case ActivityConstants.ACTIVITY_3:
            // Activity2 is started from Activity3
            break;
        }

这篇关于如何知道android中的调用活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆